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

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

华为手机为什么越来越贵啊?一方面用了更好的零件,成本越来越高,其实不光是华为,整个行业旗舰机的价格都在逐年上涨。另一方面全球芯片短缺,加上一些不正当挤压,华为手机的供货量急剧减少,供小于求,所以价格会逐渐上现在的手机有必要用2。5D的屏吗?才买的红米note4x,淘宝买了个壳子,送了一张钢化膜,自己贴的,发现左右两边有白色空隙不贴服,自己找了个注射器和一瓶润滑油,在两边打上油然后挤压使油进入缝隙,最后用纸巾擦去多余油只用手机如何把女生的手势拍摄得很精致?那首先是你把镜头对焦点直接对住女生的手指。之前很多人都是伸出剪刀手V,在战争年代这是代表胜利的意思,后来不管是什么场合,大家都喜欢伸出这个剪刀手,一度成为时髦。再后来大家发现,这个辣子鸡丁怎么做鸡肉才能外酥里嫩?辣子鸡丁,川菜系里的一盘碎黄金!让人喜闻乐见,不过用油那可是真真切切的油汪汪,做法其实难度适中。辣子鸡丁现在全国都有,早就传遍全国,但这道菜的精髓仍然是,香辣,脆嫩,火红,嘎嘣香!天津最美的一条道路是哪里?若问天津最美的一条道路在哪里我觉得大众公认的,应该是从天津站前的海河广场,沿着海河东路一直到天津之眼,区间大概4公里左右。途中有许多著名的景点分布其附近,如津湾广场意大利风情区天津哪款电视盒子内容丰富点好用些?其实各家盒子本身内置的内容,丰富程度相差并不多,真正决定内容多样化的因素是对第三方应用的支持程度。这就像智能手机一样,基本功能都差不多,用户想实现什么功能,就安装对应的APP,不准你还会一如既往支持联想吗?联想是联想,柳杨是柳杨。把联想这块地里坏了芯的残杨败柳清干净,以后还是能长出好庄稼的,到那时候再支持联想吧。同意的点个赞呗我们支持联想,但必须把黑心资本家卖国求荣者侵吞国有财产的蛀南昌航空大学是一所什么层次的大学?地理位置绝佳,校园美观大方,优势专业突出,餐饮住宿改观。说起江西南昌的大学,一般人首先想起的可能是南昌大学,毕竟他是211院校嘛。可是也不要忘了,南昌还有一所特色工科大学南昌航空大语文总是因为阅读理解题被扣分,该怎么办?语文阅读理解如果要细致地分析起来,可能得写一本书,那么我们怎么通过一篇文章就能明白,该如何做好阅读理解呢。我只能说,试着解答一下吧。阅读理解,顾名思义,要分为阅读与理解两个部分来思吃茶油有什么好处吗?山茶油野茶油茶籽油茶油都是一种食用油,而且这种油是中国特有的,在福建湖南云南广西贵州等地盛产。山茶是中国大别山福建江西湖南(常宁)等地特产,果实中可以提取优质的山茶油,即茶籽油。山肾阴肾阳都虚,该怎么调理?一阴阳是一组相对动态平衡的概念,在一般情况下肾阴虚常常伴随肾阳亢奋或者在肾阳虚常常伴随肾阴亢奋。这种观点是建立在阴阳的动态平衡中阳消阴长阴消阳长,是建立在同一阴阳水平段面上的。但在
皮海洲董明珠鼓励员工砸锅卖铁买格力股票不等于投资者也可以皮海洲立方大家谈专栏作者今年全国两会期间,格力电器董事长董明珠接受专访时表示,她经常鼓励员工购买格力股票,有很好的买入机会时砸锅卖铁都要买,买不了了她再来兜底。这一话题随即冲上热搜夫妻两人买安井食品股票大赚140万元,住进别墅张恒飞按照他老婆的意思,把股票账户中所有的股票全部清仓,这时账户中显示可用资金大约是30万,前脚刚把所有的股票清仓,后脚接着用30万的总资金全部买进每股45元的高价股安井食品,他总新一轮党和国家机构改革,意味着什么?这次党和国家机构改革,其中有两个组建中央金融委员会组建中央科技委员会新一届领导层把金融与科技提到一个新的重视高度。引导攻克科技卡脖子问题,从根源上释放制造业潜力。增强防范金融系统性方盛制药338产品集群铸就基石,战略转型开启新篇章(报告出品方作者德邦证券,陈铁林,刘闯,陈进,张俊)1。方盛制药锐意进取,战略转型开启新篇章1。1。战略转型聚焦主业,资产结构优化有望开启新成长阶段公司为致力于打造以创新中药为核心关于养老保险,别信这些谣言!来源成都网络辟谣听说养老保险断缴会清零?领取养老金城镇户籍比农村户籍多?同时参加两份养老保险可以领两份养老金?有关养老保险的各类谣言层出不穷,真假难辨的传言让不少参保人员深受困扰。帝斯曼与中国食品研究院共建营养健康原料标准化联合研究中心近日,在第二十六届中国国际食品添加剂和配料展览会(FIC2023)上,中国区总部位于浦东张江的帝斯曼与中国食品发酵工业研究院达成战略合作。记者了解到,双方将依托帝斯曼在生物技术和发金融活水润百业消费复苏春意浓西安银行精准施策促消费赋能文旅消费市场火起来春节期间,西安文旅强势出圈,文旅带动消费的独特优势也不断积聚释放。今年的西安市政府工作报告提出,发挥文旅特色优势扩大消费,加快建设国际消费中心城市,让西安文旅消费市场火起来,全面吹亚马逊测试新功能将向消费者展示商品销量数据01hr亚马逊测试新功能将向消费者展示商品销量数据3月16日消息,据悉,亚马逊官方网站商品搜索结果和部分店铺页面已经可以看到商品销量数据。目前,该功能仅对部分商品开放。通过检索发现外贸线上推广的渠道和方法有哪些说到外贸线上推广的渠道和方法,很多人第一反应是谷歌推广,而谷歌推广包括谷歌优化和谷歌竞价两种,而由于谷歌优化和竞价都是依托于谷歌的引流方式,企业在选择时往往犯了难。那么今天外贸网站财联社创投通一级市场本周89起融资环比增17。1中出服获中国中免12。28亿元增资科创板日报3月18日讯(研究员李红晖顾瑞雪段依尘王锋)据财联社创投通数据显示,本周(3。113。17)国内统计口径内共发生89起投融资事件,较上周76起增加17。1近一周已披露的融沈阳市于洪区市场局企业开办进园区,便企服务再升级来源人民网辽宁频道真的是太方便了!从办公室出来走几步就可以在园区便企服务办公室办理营业执照,不用再往大厅去跑了,十多分钟就能完成,非常快!近日,入驻沈阳市于洪区长涛健康科技小镇的企