优化应贯穿整个产品开发周期中,比如编写复杂SQL时查看执行计划,安装MySQL服务器时尽量合理配置(见过太多完全使用默认配置安装的情况),根据应用负载选择合理的硬件配置等。
1、性能分析
性能分析包含多方面:CPU、Memory、磁盘/网络IO、MySQL服务器本身等。
1.1 操作系统分析
常规的操作系统分析,在Linux中通常包含一些性能监控命令,如top、vmstat、iostat、strace、iptraf等。
1、内存:内存是大项,高查询消耗大量的查询缓存,内存必须足够,并且给系统本身要预留一些。
2、磁盘:配备高速磁盘+RAID会有更好的读写速度,并且SSD成本逐渐降低,升级成本会在可接受范围。
3、网络:目前市场上千兆万兆网卡已很常见。
4、CPU:虽然很多情况下CPU用不完,但也不能让它成为瓶颈。
生产环境的MySQL多数情况部署在Linux系统中,Linux系统本身可以优化的配置并不多。硬件的选型是复杂,涉及计算机组成的原理性知识,需要额外了解。
1.2 MySQL服务性能分析
MySQL服务器的性能通常通过监控命令查看系统工作状态,确定哪些因素成为瓶颈。
1.2.1 SHOW GLOBAL STATUS
显示了目前MySQL的工作状态,包含很多参数,下面对一些参数进行说明,其余的参考官方说明:
====================================
1. Aborted_clients
如果该值随时间增加,检查是否优雅关闭连接,检查max_allowed_packet配置变量是否被超过导致强制中断。
2. Aborted_connections
接近于0,检查网络问题,如果有少量是正常的,比如鉴权失败等。
3. Binlog_cache_disk_use和Binlog_cache_use
大部分事务应该在缓冲中进行,如果disk cache很大,可考虑增加内存缓存。
4.