范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

慢查询MySQL定位优化技巧,从10s优化到300ms

  文章目录如何定位并优化慢查询SQL? 如何使用慢查询日志? 慢查询例子演示,新手都能看懂 查询语句慢怎么办?explain带你分析sql执行计划 当主键索引、唯一索引、普通索引都存在,查询优化器如何选择? 1.如何定位并优化慢查询SQL?
  一般有3个思考方向 1.根据慢日志定位慢查询sql 2.使用explain等工具分析sql执行计划 3.修改sql或者尽量让sql走索引2.如何使用慢查询日志?
  先给出步骤,后面说明
  有3个步骤1.开启慢查询日志
  首先开启慢查询日志,由参数slow_query_log  决定是否开启,在MySQL命令行下输入下面的命令:set global slow_query_log=on;
  默认环境下,慢查询日志是关闭的,所以这里开启。2.设置慢查询阈值set global long_query_time=1;
  只要你的SQL实际执行时间超过了这个阈值,就会被记录到慢查询日志里面。这个阈值默认是10s,线上业务一般建议把long_query_time  设置为1s,如果某个业务的MySQL要求比较高的QPS,可设置慢查询为0.1s。
  发现慢查询及时优化或者提醒开发改写。一般测试环境建议long_query_time  设置的阀值比生产环境的小,比如生产环境是1s,则测试环境建议配置成0.5s。便于在测试环境及时发现一些效率的SQL。
  甚至某些重要业务测试环境long_query_time  可以设置为0,以便记录所有语句。并留意慢查询日志的输出,上线前的功能测试完成后,分析慢查询日志每类语句的输出,重点关注Rows_examined  (语句执行期间从存储引擎读取的行数),提前优化。3.确定慢查询日志的文件名和路径show global variables like "slow_query_log_file"
  结果会发现慢日志默认路径就是MySQL的数据目录,我们可以来看一下MySQL数据目录 show global variables like "datadir";
  不用关注这里为什么不是MySQL 8.0,这和版本没什么关系的。
  来,直接上菜,干巴巴的定义我自己都看不下去
  我们先来查看一下变量,我框出了需要注意的点
  查询带有quer的相关变量show global variables like "%quer%";
  这里设置慢查询阈值为1sset global long_query_time=1;
  可以看到已经修改过来了
  但是重启mysql客户端设置和统计慢查询日志条数就会清零,即所有配置修改会还原
  命令修改配置之后,在命令行net stop mysql  关闭MySQL服务,再net start mysql  开启MySQL服务,接着执行show global variables like "%quer%";  会发现配置还原了。
  在配置文件修改才能永久改变,否则重启数据库就还原了3.慢查询例子演示,新手都能看懂
  数据表结构,偷懒没写commentCREATE TABLE `person_info_large` (       `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,       `account` VARCHAR (10),        `name` VARCHAR (20),       `area` VARCHAR (20),       `title` VARCHAR (20),      `motto` VARCHAR (50),     PRIMARY KEY (`id`),       UNIQUE(`account`),     KEY `index_area_title`(`area`,`title`)  ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8
  这里的数据是200W条。请注意表结构,记住哪几个字段有索引即可,后续围绕这个表进行分析。
  这个3.36s并不是实际执行时间,实际执行时间得去慢查询日志去看Query_time  参数
  可以看到Query_time: 6.337729s  ,超过了1s,所以会被记录,一个select语句查询这么久,简直无法忍受。
  图中其他的参数解释如下:Time :慢查询发生的时间Query_time :查询时间Lock_time :等待锁表的时间Rows_sent :语句返回的行数Rows_exanined :语句执行期间从存储引擎读取的行数
  上面这种方式是用系统自带的慢查询日志查看的,如果觉得系统自带的慢查询日志不方便查看,可以使用pt-query-digest  或者mysqldumpslow  等工具对慢查询日志进行分析。
  注意:有的慢查询正在执行,结果已经导致数据库负载过高,而由于慢查询还没执行完,因此慢查询日志看不到任何语句,此时可以使用 show processlist  命令查看正在执行的慢查询。show processlist  显示哪些线程正在运行,如果有PROCESS  权限,则可以看到所有线程。否则,只能看到当前会话线程。4.查询语句慢怎么办?explain带你分析sql执行计划
  根据上一节的表结构可以知道,account是添加了唯一索引的字段。explain分析一下执行计划。
  我们重点需要关注select_type  、type  、possible_keys  、key  、Extra  这些列,我们来一一说明,看到select_type  列,这里是SIMPLE  简单查询,其他值下面给大家列出。
  type列,这里是index,表示全索引扫描
  表格从上到下代表了sql查询性能从最优到最差,如果是type类型是all,说明sql语句需要优化。
  注意:如果 type = NULL  ,则表明个MySQL不用访问表或者索引,直接就能得到结果,比如explain select sum(1+2);
  possible_keys  代表可能用到的索引列,key表示实际用到的索引列,以实际用到的索引列为准,这是查询优化器优化过后选择的,然后我们也可以根据实际情况强制使用我们自己的索引列来查询。
  Extra列,这里是Using index
  一定要注意,Extra中出现Using filesort  、Using temporary  代表MySQL根本不能使用索引,效率会受到严重影响,应当尽可能的去优化。
  出现Using filesort  说明MySQL对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容,有索引就维护了B+树,数据本来就已经排好序了,这说明根本没有用到索引,而是数据读完之后再排序,可能在内存或者磁盘上排序。也有人将MySQL中无法利用索引的排序操作称为"文件排序"。
  出现Using temporary  表示MySQL在对查询结果排序时使用临时表,常见于order by  和分组查询group by
  回到上一个话题,我们看到account是添加了唯一索引的字段。explain分析了执行计划后
  直接按照account降序来查
  查看慢查询日志发现,使用索引之后,查询200W条数据的速度快了2s
  接着我们分析一下查询name的sql执行计划
  然后给name字段加上索引
  加上索引之后,继续看看查询name的sql执行计划
  对比一下前面name不加索引时的执行计划就会发现,加了索引后,type由ALL全表扫描变成index索引扫描。order by  并没有 using filesort  ,而是using index  ,这里B+树已经将这个非聚集索引的索引字段的值排好序了,而不是等到查询的时候再去排序。
  接着我们继续执行查询语句,此时name已经是添加了索引的。
  结果发现,name添加索引之前,降序查询name是花费6.337729s,添加索引之后,降序查询name花费了3.479827s,原因就是B+树的结果集已经是有序的了。
  5.当主键索引、唯一索引、普通索引都存在,查询优化器如何选择?
  查询一下数据的条数,这里count(id)  ,分析一下sql执行计划
  这里实际使用的索引是account唯一索引。
  分析一下:实际使用哪个索引是查询优化器决定的,B+树的叶子结点就是链表结构,遍历链表就可以统计数量,但是这张表,有主键索引、唯一索引、普通索引,优化器选择了account这个唯一索引,这肯定不会使用主键索引,因为主键索引是聚集索引,每个叶子包含具体的一个行记录(很多列的数据都在里面),而非聚集索引每个叶子只包含下一个主键索引的指针,很显然叶子结点包含的数据是越少越好,查询优化器就不会选择主键索引
  当然,也可以强制使用主键索引,然后分析sql执行计划
  我们看一下优化器默认使用唯一索引大致执行时间676ms
  强制使用主键索引大致执行时间779ms
  我们可以用force index  强制指定索引,然后去分析执行计划看看哪个索引是更好的,因为查询优化器选择索引不一定是百分百准确的,具体情况可以根据实际场景分析来确定是否使用查询优化器选择的索引。

今年冬天火了一种穿法叫三不露,温暖好看,太美太高级了吧文小菊hi,我是小菊,继续我们的变美之旅吧所谓的三不露,也就是不露脖子不露腰不露腿,毕竟寒冷的冬季,我们都恨不得裹在被窝里才叫舒服呢。这三个部位冬天露在外面不仅会让寒风直接进入体内冬天进补,猪肉鸭肉不如它,8元1斤,便宜又滋补,炖着吃最香冬季讲究进补,但很多朋友对进补的理解存在误区,大多数人认为多喝汤多吃肉就可以补益身体,但事实并不是如此。汤水中的营养价值并没有想象中的那么高,还含有大量的脂肪,吃多了反而引起肥胖,董文胜李广益被查,中超环境恶劣至此?何时才能天亮?体育圈堪比娱乐圈?媒体爆出足球群惊天消息,原天津泰达俱乐部董事长,董文胜和总经理李广益双双接受调查。早在此前泰达队就被网友爆出存在严重问题,球迷质疑俱乐部对于外援的买卖存在不合理现冬天我家最爱喝这汤,每周至少做2次,十块钱煮一大锅全家喝个够大雪节气过后,进入了严冬,气温骤降,正是进补的好时节,俗话说得好,食补胜于药补,进补有度,汤一直是国人公认的最佳养生方式之一,人们对汤的喜爱早已渗透到每天的一日三餐中。无论是居家生今天A股为啥突然大涨,到底是谁在拉升?真实原因在这里今天A股开盘高开高走,市场人气旺盛。特别我一直较为看好的消费行业股票走势强劲,我最为看好的食品饮料板块股票盘中放量大涨。白酒股票纷纷大涨,贵州茅台放量大涨突破2000元股价大关。今中国月球车玉兔二号在月球发现神秘小屋中国的月球车玉兔二号在月球表面上发现了一个形状奇怪的物体。当这台月球车的相机捕捉到这个约80米开外的立方体时,它正在沿着位于月背的冯卡门撞击坑行驶。中国国家航天局旗下我们的太空公众玉兔二号火了,只因发现了月球小屋?国外关注度仅次于李子柒关注航天和外星探索的人可能知道,每当美国好奇号毅力号火星车在火星上发现一块奇怪的石头,或者一处有意思的地形时,总会引起爱好者的围观和猜测,比如直径不足5毫米有金属光泽的圆球,被外界仁济医院最新发现抗美援朝相关史料江绍基院士也曾在朝鲜守护最可爱的人图说江绍基(三排左五)参加上海市医务工作抗美援朝志愿医疗手术队院方供图(下同)据江绍基的儿子江尧湖回忆,1952年2月,当时33岁的江绍基获批加入上海市医务工作抗美援朝志愿医疗手术1976年,病重的毛主席多次痛哭,一旁的张玉凤看在眼里,痛在心里晚年毛主席前言1976年,对于所有中国人来说都是沉痛的一年。在这一年中,中国三位伟大的开国元勋永远地离开了我们,7月28日发生在唐山的7。8级大地震,更是牵动了全国人民的心。灾难发童星不同命有人成中科院博士,有人锒铛入狱,最可惜的是小小彬日剧LegalHigh里曾出现过一段台词,可以说是对童星下场最好的预言要么是成为察言观色,颐指气使的早熟毛孩要么就是成为玩偶一般被大人操控,被鞭子追打的赚钱机器。童星,意为少年成名LPL第一支全神班诞生?TES全员更改韩服ID,节目效果太好了一直以来,很多小伙伴都希望LPL会有一些大手子战队,能够组建一支超级银河战舰,也就是说这支队伍不但要在纸面实力上面,看着特别的强大,在荣誉流量等方面,都必须要到位,这样一来,这支队
糖尿病友一周三餐怎么吃加餐版(04。1804。24)星期一(总热量16001700千卡)早餐青菜豆腐汤150克杂面馒头100克水煮鸡蛋1个加餐拌大白菜100克午餐杂粮米饭120克柿子椒豆干炒肉片200克番茄紫菜汤200克加餐窝头50肾病科杨花柳絮满天飞,注意预防过敏性紫癜导致的肾炎春天花粉与柳絮齐飞,冷暖空气交互,所以我们要注意预防过敏性紫癜导致的肾炎。过敏性紫癜就是皮肤黏膜上出现小出血点,主要发生在皮肤上。各年龄均可发病,以春秋两季常见。过敏性紫癜可表现为半夜经常醒来是肝火旺盛?若肝火旺盛,会有这几个表现最近,小红经常莫名其妙地发火,还对着孩子发脾气,而且小红睡到半夜就醒了,之后翻来覆去睡不着了。几乎要熬到天亮了才能睡一会儿,然后就起床上班了。没几天时间,就熬出了黑眼圈大眼袋,而且谷雨前后,别忘了要3吃,3不吃,家人少生病,为夏天打好基础谷雨就要到了,作为二十四节气当中排第六的谷雨,也是春季最后一个节气,过了谷雨之后,春天也就结束啦。作为中华传统节气,在谷雨前后,大家知道该吃什么美食吗?每个节气都意味着气候的变化,胃炎还在用奥美拉唑?舌象告诉你如何参考中成药,学会不走弯路胃炎反反复复,你还一直在用奥美拉唑吗?大家好,我是和医生,如果你经常的食欲不振,反酸烧心,一吃凉的刺激的东西便会胃痛,甚至拉黑色的大便,很多人去医院做个胃镜,发现得了胃炎有的是浅表得了缺血性脑卒中,这是怎么回事?这种情况,医学上称为醒后卒中。这是因为人在睡眠过程中,也会发生生理病理的改变。比如生理角度上,夜晚交感神经会受到抑制,副交感神经会兴奋,那么人的血流速度就会减慢。从病理角度上,一些马斯克谈火星移民票价,先低价吸引100万人到火星上建造城市2022年TED大会上,特斯拉CEO重新提起了火星移民计划,该计划基于马斯克旗下的太空探索技术公司SpeceX,在未来几十年内将在火星上打造一个可以自给自足的城市,那么第一批开荒的第二次意大利之旅,去了加尔达湖,美丽而遗憾加尔达湖是意大利风景多彩多姿的湖泊。加尔达的景点很多,有碧绿的南湖岸紧挨着北面陡峭的斜坡和悬崖群山映衬下的东侧林荫。加尔达是一个二战后发展起来的颇受欢迎吸引人的旅游胜地。加尔达湖位关于导游证没事儿,进来看看最近写了几篇我带团所遇到的事情,有些小伙伴们想知道导游证怎么考,今天我会用这篇文章,解答你的疑惑网络配图导游证考试在每年的六到八月份在网上报名,需要提交你的电子照和学历证书,中专以行走河南读懂中国怀想尧山杜鹃岁月骎骎,山河浩浩,不经意间,又见四月芳菲。伴随着季节的更替,尧山杜鹃在春风春雨的浇灌下正在经历盛开前最后的蛰伏,一园红艳醉坡陀,自地连梢簇茜罗,一场声势浩大的杜鹃盛宴即将在大美尧脑血栓前期有几大症状,中医说这个地方出血一定要预防脑血栓现在已经不仅是中老年人的常见病了,年轻人太过劳累也会引起脑内血管的血栓的生成,不仅随着血栓增大增多会影响脑部血液的供给,导致气阻血瘀,影响阴阳调和,阻碍身体健康,后期一旦脱落