最近有一点空闲时间,想到mysql数据库服务器最近有点慢,就考虑怎么优化一下。
折腾了半天,查看mysql服务器的运行状态,优化数据库配置:内存、连接数等等,包括慢查询sql语句什么的,没有什么明显的效果。当然我在这方面也只是入门级的,基本上每个配置项都需要对着参考手册来优化,可能根本没有达到最优的效果。
翻看了很多文章,思考了一下。我发现很多文章提到的优化方式基本上都是在sql语句,mysql服务器配置的层面,导致了我们有时候优化只不过是采用头痛医脚的方式。数据库服务器的性能可能是多方面,我想在做优化的时候应当遵循这样一个原则:尽可能早的开始考虑优化,但尽可能迟的调试服务器配置和sql。从规划上架构上考虑数据库的性能扩展和瓶颈,当服务器运行一定时期的时候,我们才有更多的服务器运行状态和数据来优化配置。
下面整理了一下大致的思路,但这里没办法详细深入的来谈,主要是涉及的面太广,有这方面的知识,却没有这方面的实践经验。只能算作抛砖引玉,其实不同的数据库之间除了具体的数据库配置有一些差异,基本上可以共用的。
1. 硬件
这里主要谈磁盘,raid , 高效磁盘,固态硬盘
2. 架构
存储架构,主从,读写分离,集群
3. 数据库设计规划
分表,分库,存储引擎选择等
4. 数据库服务器
从编译时开始
操作系统
数据库配置,例如mysql
5. sql 语句
针对mysql sql执行计划 优化。大部分的数据库的sql执行计划基本一致。
mysql 注意不同存储引擎对相同sql 语句有不同的效果