mysql优化教程

来看MySQL内部的观测,常用的观测手段是这样的,从上往下看,第一部分是Processlist,看一下哪个SQL压力不太正常,第二步是explain,解释一下它的执行计划,第三步我们要做Profilling,如果这个SQL能再执行一次的话, 就做一个Profilling,然后高级的DBA会直接动用performance_schema ,MySQL 5.7 以后直接动用sys_schema,sys_schema是一个视图,里面有便捷的各类信息,帮助大家来诊断性能。再高级一点,我们会动用innodb_metrics进行一个对引擎的诊断。

除了这些手段以外,大家还提出了一些乱七八糟的手段,我就不列在这了,这些是常规的一个MySQL的内部的状态观测的思路。除了这些以外,MySQL还陆陆续续提供了一些暴露自己状态的方案,但是这些方案并没有在实践中形成套路,原因是学习成本比较高。

外部资源观测这部分,我引用了一篇文章,这篇文章的二维码我贴在上面了。这篇文章是国外的一个神写的,标题是:60秒的快速巡检,我们来看一下它在60秒之内对服务器到底做了一个什么样的巡检。一共十条命令,这是前五条,我们一条一条来看。

1.uptime,uptime告诉我们这个机器活了多久,以及它的平均的负载是多少。
2.dmesg -T | tail,告诉我们系统日志里边有没有什么报错。

3.vmstat 1,告诉我们虚拟内存的状态,页的换进换出有没有问题,swap有没有使用。

4. mpstat -P ALL,告诉我们CPU压力在各个核上是不是均匀的。

5.pidstat 1,告诉我们各个进程的对资源的占用大概是什么样子。

我们来看一下后五条:

首先是iostat-xz 1,查看IO的问题,然后是free-m内存使用率,之后两个sar,按设备网卡设备的维度,看一下网络的消耗状态,以及总体看TCP的使用率和错误率是多少。最后一条命令top,看一下大概的进程和线程的问题。

这个就是对于外部资源的诊断,这十条命令揭示了应该去诊断哪些外部资源。

1.3 外部需求改造

第三个诊断思路是外部的需求改造,我在这里引用了一篇文档,这篇文档是MySQL的官方文档中的一章,这一章叫Examples of Common Queries,文档中介绍了常规的SQL怎么写, 给出了一些例子。文章的链接二维码在slide上。

我们来看一下它其中提到的一个例子。

它做的事情是从一个表里边去选取,这张表有三列,article、dealer、price,选取每个作者的最贵的商品列在结果集中,这是它的最原始的SQL,非常符合业务的写法,但是它是个关联子查询。

关联子查询成本是很贵的,所以上面的文档会教你快速地把它转成一个非关联子查询,大家可以看到中间的子查询和外边的查询之间是没有关联性的。

第三步,会教大家直接把子查询拿掉,然后转成这样一个SQL,这个就叫业务改造,前后三个SQL的成本都不一样,把关联子查询拆掉的成本,拆掉以后SQL会跑得非常好,但这个SQL已经不能良好表义了,只有在诊断到SQL成本比较高的情况下才建议大家使用这种方式。

为什么它能够把一个关联子查询拆掉呢?

这背后的原理是关系代数,所有的SQL都可以被表达成等价的关系代数式,关系代数式之间有等价关系,这个等价关系通过变换可以把关联子查询拆掉。

上面的这篇文档是一个大学的教材,它从头教了关于代数和SQL之间的关系。然后一步步推导怎么去简化这句SQL。

第一,MySQL本身提供了很多命令来观察MySQL自身的各类状态,大家从上往下检一般能检到SQL的问题或者服务器的问题。

第二,从服务器的角度,我们从巡检的脚本角度入手,服务器的资源就这几种,观测手法也就那么几种,我们把服务器的资源全部都观察一圈就可以了。

第三,如果实在搞不定,需求方一定要按照数据库容易接受的方式去写SQL,这个成本会下降的非常快,这个是常规的MySQL慢的诊断思路。

MySQL的优化要根据实际业务,并没有什么通用的优化。

其实其他回答都说的很全,

但是我从比较实际的地方说说吧。

第一、开启MySQL的slowLog

slowLog会记录MySQL执行过的慢查询,比较佛系的办法就是让它记录一段时间,

然后查看里面执行的语句。

第二、通过desc的方式来查看慢的原因

比如:SELECT * FROM tbl WHERE Date = CURDATE();

你可以通过执行 desc SELECT * FROM tbl WHERE Date = CURDATE();

这个时候Mysql就会显示执行这句sql的计划,

如果你发现是全表查询,这个时候尝试在Date上增加索引,

然后再跑一次DESC,这个时候你就会发现这句语句已经走了索引。

*通常这个办法能解决90%的慢查询问题。

当上面的问题都无法满足到你的时候,

建议可以参考Mysql官方的参数设定,

然后根据业务特性对MySQL进行特定优化。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/5713.html

(0)
上一篇 2022-11-24 下午3:08
下一篇 2022-11-25 上午8:53

相关推荐

  • 大连一女子在一家美容整形工作室做双眼皮手术,针断在眼内险些使人失明,你怎么看

    这个故事,真的又刷我的三观了。因为我之前一直觉得,做双眼皮这种最初级、资历最老的整容手术,技术已经十分成熟,几乎不会再有什么风险了,原来又是我天真了。 但我只是想想,还有一个姑娘比…

    2022-09-27
  • 销售管理

    我认为销售管理的流程包含了以下几个方面: 之前去参加过一鸣心所向的线下课程讲座,针对如何快速打造销售流程、打造销售全流程管理体系、等内容也进行的学习,学习到了很多关于销售管理的干货…

    培训问答 2022-08-18
  • 深圳足球,中国足协深圳青训中心

    一个城市有没有顶级联赛球队,有球队能否成为豪门,和很多因素有关。 首先得有肯持续投入巨资的老板。足球说到底还是一门生意,无论在中国还是世界其他任何地方,都这个道理。没钱,就买不来好…

    2023-02-26
  • 高一英语很差现在把高中3500的单词背会有很大用处

    英语像汉语一样是一门语言学科,大家知道语言组成的基本要素是词汇,沒有一定量的词汇积累,就不会遣词造句,就无法理解段落和篇章大意,更现实地说你无法看懂试题,无法阅读试卷,很难取得该学…

    培训问答 2022-04-10
  • 雅思复议

      您可以通过英国文化协会中国办公室(英国驻华使/领馆文化教育处)考试部申请对考试成绩进行复议。您须在考试成绩单下方的打印日期的4周内将下列资料送达或寄达相应的英国文化协会中国办公…

    培训问答 2022-10-28
  • 室内设计有什么讲究,古代室内设计讲究

    一、 高楼地面装修不要都铺装大理石。 二、装饰不能随意在承重墙上穿洞、撤除衔接阳台和门窗的墙体以及扩展原有门窗尺度或许另建门窗,这种做法会形成高楼部分裂缝和严重影响抗震才能,然后缩…

    2023-05-17
  • 十大靠谱的留学中介,最靠谱的留学中介排名

    解答界的搬运工——今天搬运工小张上线,搬运一条不错的解答 作为曾经掉过很多坑,好不容易拿到USC的学姐,先给大家排一下坑吧,一定一定要注意。 1.不要听到“我们曾经拿到过哈佛和麻省…

    2022-12-23
  • 云南曲靖高级技工学校怎样

    云南曲靖高级技工学校是曲靖市人民政府主办、曲靖市人力资源和社会保障局主管的国家级重点高级技工学校。 学校创建于1973年8月。建校以来,学校坚持正确的办学方向,全面贯彻党的教育方针…

    2023-06-26
  • 意大利图兰朵计划,意大利留学图兰朵计划与马可波罗计划

    图兰朵计划 图兰朵计划(意大利语:Programma Turandot)是意大利政府于2009年推出的主要针对艺术、音乐和设计专业的中国学生,为其提供在意大利艺术和音乐类院校学习的…

    培训问答 2022-08-19
  • 沈阳雅思托福哪个培训较好

    很高兴回答你的问题,雅思和托福去哪里培训,一般建议找知名度高,办学资质齐全,口碑相对较好的机构,让他们分别给你出具详细的提分方案,然后到机构进行试听课,逐一比对,再做选择。 从不同…

    培训问答 2022-04-29