MySQL数据库优化返回列表
上传时间:2015-02-02 内容关键字:MySQL数据库优化
一、网络方面的配置:
LINUX系统下:
要修改/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.conf文件, 增加以下内容以修改打开文件数量的限制
*soft nofile 65535
*hard nofile 65535
除此之外最好在MySQL服务器上关闭iptables,selinux等防火墙软件。
二、MySQL配置文件:
MySQL可以通过启动时指定配置参数和使用配置文件两种方法进行配置,在大数情况下配置文件位于/etc/my.cnf或是/etc/mysql/my.cnf在windows系统配置文件可以使位于C:/windows/my.ini文件MySQL查找配置文件的顺序可以通过以下方法获得。
$ /usr/sbin/mysqld --verbose --pelp | grep -A 1 ‘Default options’
注意:如果多个位置存在配置文件,则后面的会覆盖前面的。
MySQL配置文件 -- 常用参数说明:
mysql.ini中:
innodb_buffer_pool_size
非常重要的一个参数,用于配置Innodb的缓冲池如果数据中只有Innodb表,则推荐配置量为总内存的75%。
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;
+--------+----------+
| ENGINE | Total MB |
+--------+----------+
| NULL | NULL |
| CSV | 0.0 |
| InnoDB | 6.6 |
| MyISAM | 1.0 |
+--------+----------+
配置最小大小:innodb_buffer_pool_size >= Total MB 如果没存确实比较小,那么设置的尽量的大就OK了。
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,但如果数据安全性比较高则使用默认值。
0:每次变更时不刷新,只是每1秒钟刷新到磁盘一次。
1:把每一次变更刷新到磁盘,这是最安全的。
2:每次变更不刷新,而是缓冲到磁盘,然后每1秒钟再刷新到缓磁盘。
innodb_read_io_threads
innodb_wite_io_threads
以上两个参数决定了Innodb读写的IO进程数,默认值为4,MySQL5.5以后可以根据服务器的内核数进行适当调整。到底是读多一些还是写一些。
innodb_file_per_table
控制Innodb每一个表使用独立的表空间,默认为OFF,也就是所有的表都会建立在共享表空间里。建议设为OFF,增减并发的读写效率。
innodb_stats_on_metadata
决定了MySQL在上面情况下会刷新innodb表的统计信息。建议设为OFF。