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

慢查询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  强制指定索引,然后去分析执行计划看看哪个索引是更好的,因为查询优化器选择索引不一定是百分百准确的,具体情况可以根据实际场景分析来确定是否使用查询优化器选择的索引。

同为刘备托孤大臣,为何李严被贬为庶人?第四次北伐(4)众所周知,刘备永安托孤时有两位托孤大臣,一位是诸葛亮,另一位就是李严。李严少年时候就以才干著称,原是刘璋手下,在刘备入川的关键时期,转投刘备,为刘备收川立有功劳。此后,官运亨通,从崇祯继承哥哥皇位,如何对待21岁,有艳后之称的皇嫂?最具争议的帝王崇祯皇帝朱由检绝对称得上明朝最具争议的皇帝,爱他的人会称赞他天子守国门,君王死社稷。恨他的人会批判他一贯无胆,二目短见,三餐作秀,四处民变,五番破口,六部频换,七戮大沙丘宫被后人称为邪恶的龙族之地,无人敢去追秦始皇沙丘宫被后人称为邪恶的困龙之地,秦始皇之后无人敢去。河北邢台广宗县,有一片沙丘古地。多少年来,这个看似不起眼的小疙瘩地,却很有名气。它之所以出名不是因为它雄伟,而是因为它承载了厚重内乱必致外患,天下事莫不如此文FK小编按语八王之乱,是西晋时期公元291年到306年的一场皇族为争夺中央政权而引发的内乱,历时十六年,严重破坏了当时的社会经济,导致了西晋亡国以及近三百年的动乱,使之后的中原北张嫣!西汉称之为最无辜的皇后姓名,张嫣。公元163年。婚配西汉惠帝刘盈。封号皇后。张嫣为汉惠帝刘盈的皇后。据记载,张皇后名为张嫣,字淑君。张嫣是鲁原公主与张敖的女儿,也就是说,张嫣其实是刘盈的外甥女。外甥女嫁如何消除市管县乱象中国行政区划经过多年演化,目前基本形成了省市县3级。其中,比较特别就是直辖市和地级市市管县的情况,在日常生活中造成了很多不便。为此,笔者建议对地级市直辖市做相应调整,具体变更如下一国乒8主力参赛!另有2人获外卡资格,张本伊藤领衔日本队结束了新加坡大满贯之后,下一站重要赛事就是WTT冠军赛新乡站,时间定于4月9日15日在河南新乡举办,冠军赛只设单打比赛,男女各有32个参赛资格,冠军积分为1000分。目前国乒已经报3月20日龙虎榜追踪,机构青睐这些个股3月20日龙虎榜中机构及营业部席位资金净买入2。87亿元,其中净买入的个股有14只净卖出的个股有20只。净买入金额居前的个股分别是中天科技张江高科川大智胜等,净买入金额占当日成交额穿越数字之门,探索元宇宙的奇妙世界一个超越现实世界的虚拟空间元宇宙,顾名思义,是一个超越现实世界的虚拟空间。它不仅包括虚拟现实(VR)增强现实(AR)混合现实(MR)等技术,还融合了人工智能区块链加密货币等先进技术任正非做出预判,人工智能快速发展,多个行业即将改变!去年11月底,OpenAI发布了聊天机器人程序ChatGPT,凭借极为优秀的自然语言处理能力,一经上线就得到了无数网友的关注,由此也引起了替代人类工作的各种争议。如果说ChatGP令人活力四射的4种热带水果在现代高压的生活下,每个人都希望自己身体健康活力四射,我们平时都说要多吃些水果疏菜多吃些含蛋白质维生素等的食物,但具体吃什么确不知道。今天就给大家分享四种营养丰富可在水果超市随便买
华润啤酒2022年营收上涨净利微跌,未来利润增长要靠跨界白酒和啤酒高端化2023年3月24日,华润啤酒(控股)有限公司(以下简称华润啤酒)发布2022年全年业绩。财报显示,华润啤酒于2022年的综合营业额为人民币352。63亿元,较2021年增长5。6绳彩飞扬凤凰苑幼儿园推进幼小科学衔接荆楚网(湖北日报网)讯(记者林杉通讯员张纯尹琪)跳绳是幼小衔接中学习准备的一项重要任务。3月,武汉经济技术开发区军山凤凰苑幼儿园大班的小朋友开展了绳彩飞扬快乐成长幼小衔接主题活动。历史上广东十虎中到底谁的功夫最高呢?我来回答这个问题,喜欢的话可以关注我所谓的广东十虎是指清朝末年广东的十位武林高手,他们是王隐林黄澄可苏黑虎黄麒英周泰谭济筠黎仁超陈铁志苏灿梁坤。耳熟能详的黄飞鸿并不在十虎之列,他的足协办理戴伟浚手续效率极高,为什么归化卡尔德克就不行?戴维俊是中国人呀,所以简单一可能考虑到卡尔德克的年龄问题二也会考虑归化球员适不适用中国国家队三也会大规模归化对中国国家队的影响。原因很简单因为戴伟浚年轻而且从中国香港到中国内地就是2022年春晚你看了吗?哪个节目让你印象深刻?对不起没看在睡觉。如果让我给2022年春晚小品类节目打分的话,我必须给小品父与子打个高分!此小品无论是编导还是演员,其表现都是杠杠的!小品充满了正能量,洋溢着鲜活的生活气息,体现了哈登会成为中国优质偶像球星吗?我觉得哈登不会成为中国优质偶像球星。哈登的性格还不错,最起码不会随便伤害人,这一点是值得肯定的,但是哈登毕竟是在美国长大的,很多习惯还是受到了美国文化的影响。美国的文化和中国的传统深圳楼市还能回到2022吗?深圳楼市还能回到2020吗?相信这是很多入局者的期盼,因为只有回到2020很多人才能解套,这一波楼市下行套住很多人。那我们就来回顾一下2020年深圳楼市发生什么?2020年初全国疫有千亿市值巨头人均薪酬大降3成!券业降薪真的来了么在降薪传闻一波接一波传出之际,部分证券公司的人均薪酬似乎真得降了。据南都湾财社记者不完全统计,截至目前,信达证券方正证券安信证券招商证券东方财富已公布2022年度财报及薪酬数据。报欲入股国机智骏?滴滴回应不便评价,以公告为准3月28日,赣州市一位知情官员向有关媒体透露,国机智骏正在引入外部投资者滴滴,双方进行了一年多的谈判,目前谈判已进入尾声。同日,滴滴相关人士表示,不便评价,此事涉及到上市公司,以上博鳌亚洲论坛广交会消博会等陆续举行推进高质量发展搭建平台除了即将拉开帷幕的博鳌亚洲论坛,广交会消博会等备受关注的国际展会近期也将陆续举行,为国内外交流合作推进高质量发展搭建平台。第133届广交会首批进境展品通关第133届广交会将于4月1M2即将突破300万亿,专家建议尽快消费应对通胀,你为啥不听话?此时此刻,钱正变得越来越不值钱了。看看2月份的广义货币量M2的情况,余额已经高达275。52万亿元,同比增长12。9,创下5年新高。按照这个速度,今年突破300万亿几乎没有悬念。要