系统配置优化:
数据库是基于操作系统的,目前大多数MySQL都是安装在了Linux系统之上,所以对操作系统的一些参数配置也会影响到MySQL的性能,下面是一些常用参数:
网络方面配置:要修改/etc/sysctl.conf文件
在开发过程中,或许我们经常会遇到这种连接:time out… time wait等,这时我们就需要对下列配置参数进行优化:
#增加tcp支持的队列数
net.ip4.tcp_max_syn_backlog = 65525
#减少断开连接时长,加快资源回收
net.ipv4.tcp_max_tw_buckets = 8000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
还有一个需要我们注意的配置,那就是MySQL打开文件数的限制,可以使用ulimit -a查看目录的各位限制,可以修改/etc/security/limits.conf文件,增加以下内容以修改打开文件数量的限制。
soft nofile 65535
hard nofile 65535
给mysql默认设置的打开文件数的限制是1024,当我们项目比较大,数据库表比较多时,改动这个配置就很有必要,提高数据库访问并发。
除此之外,最好在MySQL的服务器上关闭iptables、selinux等防火墙软件,只留下硬件防火墙,因为软件防火墙会对远程数据库链接造成一定的影响,当链接并发量较高时,这就会降低我们数据库的响应效率。
服务器硬件优化:
首先我们应该知道,对数据库影响最大的莫过于三个因素:cpu运算处理能力、磁盘的IO读写效率和内存大小,因此我们选择MySQL数据库服务器时要重点注意这三者的配置。
如何选择呢?
在cpu反面,现在对于mysql数据库来说,还是单cpu高频率的服务器更适合一些,因为现在来讲一个MySQL的一条SQL语句只能使用到一个cpu核心进行运算(这种情况在MySQL8.0.15版本中已经开始有了变化)。
其它二者,没有上限,磁盘IO性能越好,数据库读写操作越快。服务器内存越大,数据库就可以多从内存中读,少丛磁盘中读,这二者速度相差了数十倍甚至数百倍。
更多详细硬件配置优化可以参考本篇博文:https://blog.csdn.net/qq_25825923/article/details/84258593