从理论到实践:MySQL性能优化和高可用架构,一次讲清

2 02 2 年,我在上海这边搞过一个电商项目,数据库直接卡死,慢查日志里全是全表扫描。
我当时也懵,后来反应过来,肯定是innodb_buffer_pool_size配小了。
那会儿服务器就1 6 G内存,我把innodb_buffer_pool_size调成8 G,QPS立马就上去了。

主从复制那块,我们用的是PerconaXtraDBCluster。
集群弄了3 个节点,用的Galera协议,确实强一致,但是写延迟有点感人。
后台订单插入,前台用户查订单,有时候会差个5 00ms。
可能我偏激吧,觉得这延迟太离谱了,最后还是改回单机部署,加个读写分离。

分库分表倒是真解决了扩展性问题。
用户表按ID哈希分成了8 个库,用Mycat做中间件。
配置schema.xml的时候,花了一周把所有表都弄好,最后发现还漏了个统计表。
那叫一个头疼。

监控这块,用Prometheus+Grafana,把缓冲池命中率、IOPS都画成图。
有个次月发现,缓冲池命中率突然掉到3 0%,查了半天原来是某个报表SQL把缓存冲空了。
后来加了缓存预热,问题解决。

MGR倒是没试过,听隔壁团队说配置特别麻烦,组复制那套东西看得我头大。
他们用Keepalived+双主,读写分离搞得挺好,就是维护的时候总出问题,一会儿VIP漂移,一会儿复制延迟爆表。

学习笔记—MySQL(二十)——系统分析工具的使用

上周,我遇到了一个SQL执行慢的问题。
在分析时,我使用了MySQL的系统分析工具来定位问题。
首先,我检查了硬件配置,调整了innodb_buffer_pool_size等参数,然后通过慢查询日志、EXPLAIN和SHOW PROILING来分析低效SQL。

2 02 3 年,我优化了慢查询日志,设置了时间阈值为1 秒,并修改了日志文件路径。
我还使用了mysqldumpslow来分析日志,按执行时间排序,显示前5 条慢查询。

接着,我用EXPLAIN分析了SQL执行计划,重点关注了type、key、rows和Extra字段。
然后,我开启了SHOW PROILING,查看SQL执行成本,发现某个查询的耗时步骤在Sending data。

此外,我还通过SHOW STATUS获取了MySQL运行状态指标,如连接数和InnoDB缓冲池命中率。
我还使用了last_query_cost来统计SQL查询成本。

最后,我根据分析结果,优先优化了慢查询,结合多种工具进行分析,关注索引使用,并定期监控性能指标。
通过这些步骤,我成功解决了SQL执行慢的问题。
不过,优化是一个持续的过程,我还需要不断监控和调整。
你看着办吧。

GitHub获千万推荐!阿里新产MySQL性能优化实践笔记到底有多强?

哎,你说的这本书《MySQL性能优化实践笔记》,我确实关注过。
阿里出品,加上GitHub那么多人推荐,含金量肯定不低。

上周有个客户公司DBA跟我说,他们正好在看这本书,觉得挺解渴的。
特别是里面那些案例,都是真实场景来的,不是瞎编的。
比如那个电商秒杀场景,分库分表怎么做的,ShardingSphere和MyCat怎么选的,都讲得挺细。
我自己踩过的坑是,刚开始优化的时候光盯着SQL,结果系统资源配比不对,花了半天时间。
这本书里就提到了硬件、操作系统参数这些基础,这点挺好的。

结构上我觉得挺合理的。
基础理论讲得挺透,比如InnoDB锁机制那部分,我之前就是模糊概念,看完才清楚行锁和表锁怎么用。
案例篇更实用,你看它选的那些慢查询、死锁,都是线上常见的问题。
工具篇也全,Prometheus、Grafana这些现在都用得多了,Percona Toolkit也经常用到。
我有个同事就是靠这个工具包把一个线上慢查询搞定的。

不过要说完全完美,我觉得部分工具的实操步骤可以再详细点,有些命令参数的调优建议也最好能更具体些。
比如压测工具sysbench,不同业务场景的参数配置差别挺大的,书里就提了一下,没展开讲。

反正你看着办。
如果对MySQL性能优化这块儿真想深入研究,这本书绝对值得入。
特别是阿里那种大规模应用场景下的经验,还是挺难得的。
我还在想这个问题,就是理论结合实践的度怎么把握,书里有没有提到这个?