MySQL 性能调优和系统资源优化解决方案
数据库的重要性不言而喻,从系统开发到部署到生产环境,可能都在做跟业务相关的处理,可能当客户反馈系统运行有些慢的时候,作为 developer 可能会思考是我们自己写的那”坨”代码的问题? 是自己 Coding 的问题? 是MySQL的DML语句使用的问题? 在对 Mysql 的性能优化前,我们需要从系统运行的场景先思考一下究竟是什么影响了数据库的性能。只有了解了原因才能知道怎么让数据库的性能最大化。
服务器硬件对性能的影响
当热数据超过可用内存大小,MemCache存储引擎缓存层容易失效(当缓存大量失效时,容易产生大量的网络传输),从而影响服务器的性能。
当出现这类I/O系统瓶颈时,我们就需要升级I/O子系统,来增加更多的内存,网络与I/O资源就是对我们数据库性能影响的第二个硬件因素。
如何选择CPU
(1) 首先我们应该知道我们的应用是否是CPU密集型?如果是那么我们需要更好的CPU而不是更多的CPU。
(2) 对于目前版本的MYSQL,不支持多CPU对同一SQL并发处理。当然,我们也要看看系统的并发量如何?衡量数据库处理能力的指标 QPS:同时处理SQL的数量(这里是每秒)。
(3) 高并发的情况下,需要更多的CPU。Web类应用的并发量是非常大的,则其CPU核心数量就比频率重要。
(4) 同时也要考虑所使用的MYSQL的版本(高版本对多核CPU的支持较好、起码你可以放心使用16核或者32核的CPU)。
内存的大小影响数据库性能
(1) MySQL本身是单线程的,内存的大小直接影响MySQL的性能。
(2) 把数据存储到缓存中,可以大大提高数据的性能
(3) 在 MyISAM 引擎中,索引是存储在内存中,数据存储在硬盘上。
(4) 在 InnoDB 引擎中,索引和数据都是存储在内存中,
磁盘的配置和选择
参考链接: https://www.icode9.com/content-2-117962.html
MySQL 配置参数
MySQL 参数优化对于不同的网站,及其在线量,访问量,交易数量,网络情况,以及机器硬件配置都有关系,参数的优化不是固定的,优化不可能一次性完成,需要不断的观察与调试,才有可能得到最佳效果。
参考文档
MySQL中文官网:【MySQL 性能调优和优化资源】