备战今年——春晚红包之前

版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/86535056

今年除夕当晚,春晚红包将会随着央视春节联欢晚会的直播接棒登场,除了红包以外我们还为大家准备了 “小度”系列智能产品作为特别奖品,让大家感受到智能生活的乐趣!

这是17日下午百度与央视的官宣,这意味着对小度商城技术团队的又一大挑战。

无论怎样的技术架构,怎样的技术选型,怎样的系统优化,数据最终还是要落到数据库上。真是天意,恰巧百度大学为我们安排了“SLG人才能力提升第二站,《MySQL数据库SQL性能优化》培训与你相约”,有种及时雨的感觉。

640?wx_fmt=jpeg

讲师是张冬洪,和我也算老相识了,在《7行Python的人脸识别》一文中就用了我们的合影,呵呵。

640?wx_fmt=png

MySQL 的性能优化,每个有经验的程序员都会说出个一二三,老码农自己也写过《老曹眼中的MySQL调优》, 但是从系统性的视角来看,或者大规模的数据库优化,都应该是实践出真知。

这是一个定制后的学习过程,分为六个部分:

  • 硬件选型: 硬件优化

  • 原理和性能:参数调优

  • 开发规范:常见错误

  • 运维利器:常见工具

  • 提升效率:参数优化

  • 故障排除:捉放异常

本着保护作者知识产权的原则,记一下内容的概要,以及自己认为有趣的视角。例如硬件性能的金字塔模型:

640?wx_fmt=png

还是沿着《面向全栈的技术管理》中时空观行走,空间的载体之一就是硬件环境,然后是MySQL系统组成和InnoDB的引擎构成。

640?wx_fmt=png

640?wx_fmt=png

深入后才能浅出,才能进一步了解内存的相关参数,IO相关参数,以及与复制相关的参数,进而进行参数调优,这里没有捷径,更没有“银弹”。

开发规范同样很多,包括命名规范,库表设计,字段设计,索引规范,SQL设计规范,以及操作行为规范。虽然这些规范略显琐碎,“千里之堤,溃于蚁穴”。就像体操比赛那样,先有标准分,然后才是加分项。但是,如果上升的模式层面,可能更有系统性。

操作系统层面的调优同样不可或缺,Gregg的图是被引用最多——

640?wx_fmt=png

自己在《全栈必备 Linux基础》一文中也引用过这张图,深入学习的话,可以看那本巨著《性能之巅》。

对于系统运维,自己一直钟爱 Percona Toolkit,现在冬洪的公司也提供了一些其他的便利工具。无监控,不运维,本次学习中推荐的工具是

Prometheus + mysqld_exporter + Grafana以及PMM。

SQL的语句优化离不开执行计划(explain), Profile定位QUERY代价消耗,以及SQL Optimizer Trace,核心无它,都是减少物理IO,与IO相关的部分参数有:

640?wx_fmt=png

总之,本次学习的内容很厚实,由于时间有限,越发感到信息量很大。自我梳理一下,面向大规模数据库的系统调优可能是这样的一个金字塔结构:

640?wx_fmt=png

“是故学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。”

《礼记·学记》

猜你喜欢

转载自blog.csdn.net/wireless_com/article/details/86535056
今日推荐