ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 1、操作系统配置优化 数据库是基于操作系统的,目前大多数MySQL都是安装在Linux系统之上,所以对于操作系统的一些参数配置也会影响到MySQL的性能,下面就列出一些常用到的系统配置。 * 网络方面的配置,要修改‘/etc/sysctl.conf’文件 * 增加tcp支持的队列数 * net.ipv4.tcp\_max\_syn\_backlog = 65535 * 减少断开连接时,资源回收 * 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 * 打开文件数的限制,可以使用ulimit -a查看目录的各位限制,可以修改‘/etc/security/limits.cinf’文件,增加以下内容以修改打开文件数量的限制。 * soft nofile 65535 * hard nofile 65535 * 除此之外最好在 MySQL 服务器上关闭 iptables,selinux 等防火墙软件。 ## 2、MySQL配置文件优化 MySQL可以通过启动时指定配置参数和使用配置文件两种方法进行配置,在大多数情况下配置文件位于 /etc/my.cnf 或是 /etc/mysql/my.cnf 在windows系统配置文件可以是位于 C:/windows/my.ini 文件,MySQL查找配置文件的顺序可以通过以下方法获得。 ```linux $ /usr/sbin/mysqld --verbose --help | grep -A 1 'Default options' ``` `注意:如果多个位置存在配置文件,则后面的会覆盖前面的。` **常用配置参数说明** * innodb\_buffer\_pool\_size * 非常重要的一个参数,用户配置Innodb的缓冲池如果数据库中只有Innodb表,则推荐配置量为总内存的75%。 ```sql SELECT ENGINE,ROUND(SUM(data_length + index_length)/1024/1024,1) AS "Total MB", FROM INFORMATION_SCHEMA.TABLES WHERE table_schema not in ("information_schema","performance_schema") GROUP BY ENGINE; Innodb_buffer_pool_size >= Total MB ``` * innodb\_buffer\_pool\_instances * MySQL5.5中新增加参数,可以控制缓冲池的个数,默认情况下只有一个缓冲池。 * innodb\_log\_buffer\_size * innodb log 缓冲的大小,由于日志最长每秒钟就会刷新所以一般不用太大。 * 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,也就是所有表都会建立在共享表空间中。 * innodb\_stats\_on\_metadata * 决定了MySQL在什么情况下会刷新innodb表的统计信息。 ## 3、第三方配置工具 [https://tools.percona.com/wizard](https://tools.percona.com/wizard) 回答相应问题,会得到配置推荐。