系统的优化分操作系统和mysql服务器

数据库是基于操作系统的,目前大多数mysql都是安装在linux系统上,所以对于操作系统的一些参数配置也会有影响到mysql的性能,下面就是列出一些常用的系统配置。

网络方面的配置,要修改/etc/sysctl.conf文件

增加tcp支持的队列数

net.ipv4.tcp_max_syn_backlog=65535

减少断开连接时,资源回收,加快timewait 的时间,

net.ipv4.tcp_max_tw_buckets=8000

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tco_fin_timeout=10


打开文件数的限制,可以使用ulimit -a 查看目录的各位限制,可以修改/etc/security/limits.conf 文件,增加以下内容以修改打开文件数量的限制  

*soft nofile 65535

*hard nofile 65535 

除此之外最好在mysql服务器上关闭iptables ,selinux 等防火墙软件 


mysql本身的一些优化

mysql配置文件的使用,  /etc/my.cnf   /etc/mysql/my.cnf 

注意  如果存在多个位置存在配置文件,则后面配置的内容会覆盖前面的内容,后面的生效,前面的会失效。

配置参数常用的 ,

innodb_buffer_pool_size  ,非常重要的参数,用于配置innodb缓冲池的大小,如果数据库中只有innodb表,则推荐配置量为总内存的75%


innodb_buffer_pool_instances 5.5以后版本引进的,可以控制缓冲池的个数,增加个数可以增加并发性,


innodb_log_buffer_size  innodb log 缓冲的大小,由于日志最长每秒中就会刷新所以一般不用太da。


innodb_flush_log_at_trx_commit     关键参数决定了数据库多长时间把变更刷新到磁盘,参数有三种值,对innodb的io效率影响很大,默认值为1, 可以取0,1,2三个值,一般建议为2 ,但如果数据安全性比较高则使用默认值1


innodb_read_io_threads

innodb_write_io_threads  以上两个参数决定了innodb读写的io进程数,默认为4


innodb_file_per_table  关键参数,控制innodb每一个表使用独立的表空间,默认为off,也就是所有的表都会建立在共享表空间中,建议改为on ,使用独立的表空间,


innodb _stats_on_metadata  决定了mysql在什么情况下会刷新innodb表的统计信息,在show table时 会刷新表统计信息, 建议设置为off 这样就不会show table 刷新表统计信息。


第三方配置工具

percon configuration wizard   

https://tools.percona.com/wizard 


服务器硬件优化

如何选择cpu 单核更快的cpu  还是多核cpu,sql的执行是只能用到一个cpu ,不能并发用到多个cpu

。基于这些特点考虑用单核更快的cpu,

Disk io 优化  常用raid 级别,


也可以用ssd卡 或者faishio 

Logo

更多推荐