作为 MySQL DBA,大多数时候我们应该优化性能不佳的 MySQL 服务器。
现在我的问题是从哪里开始就像我们需要找出很多事情一样
1.Find the duplicate indexes.
2.Find unused indexes on the basis of selectivity.
3.Monitor the Server Parameters(What should be important parameters).
4.Execute MySQL Server performance tuning script.
5.Slow logs
那么检查服务器的顺序应该是什么,应该监控/分析什么以提高性能。
查找重复索引
早在 2012 年 1 月,@gbn 回答了一个关于重复索引的问题,他在其中展示了来自Ronald Bradford 博客的2 个视图。我将这两个视图组合到一个查询中以显示重复索引,如下所示:
显然,每个分组的列最少的索引需要被淘汰
根据选择性查找未使用的索引。
在我的开发者时代,我没有对未使用的索引做太多事情。我尝试只创建与以下子句匹配的必要索引:
如果您必须通过搜寻未使用的索引来清理数据库,请阅读以下内容:
监控服务器参数(什么应该是重要的参数)
这只是要监控的全局状态值的一个示例。请阅读有关服务器状态变量的 MySQL 文档。
执行 MySQL Server 性能调优脚本
最直接的脚本是 mysqltuner.pl 得到它并运行它
慢日志
慢日志在低流量环境中非常有用。不幸的是,我看到了太多的以下情况
在这种情况下,当大量需要公用表的查询时,我的查询会以极快的速度独立工作。
恕我直言,慢查询日志实际上对您没有好处,因为它记录了被视为慢的已完成查询。您真正想要做的是在长时间运行的过程中捕获长时间运行的查询。因此,我建议使用pt-query-digest来汇集进程列表(或 tmpdump)以用于运行 amok 的查询。我在 2011 年 12 月写了一篇关于如何编写 crontab 作业脚本的文章,该作业使用mk-query-digest每 20 分钟轮询一次进程列表(可以在其中插入 pt-query-digest)。