首页 > 代码库 > mysql性能基本调优

mysql性能基本调优

innodb_buffer_pool_size 80%(系统缓存池)

innodb_log_file_size    4G (mysql5.5中限定的最大数值,redo日志增大提高性能,redo日志小崩溃后恢复更快)

\\开始将这个值设置为512M可以拥有1G的的redo日志,会使得拥有充裕的写操作空间

max_connections 151(默认值,需要修改)

innodb_file_per_table OFF(默认将所有表的数据和索引存放在共享表空间,值为ON时会为每张表建立一个.ibd文件,好处在于对每个表进行drop、truncate或rebuild操作时会回收磁盘空间。但不会对数据库性能带来任何收益,在大量表情况下并不推荐这样做(10K+))

innodb_flush_log_at_trx_commit 1 (默认值,支持ACID特性,在主要关注点是数据安全时这个值是最合适的,但是对于IO(读写)速度较慢的系统,会带来巨大的开销。值为2时会导致不可靠,因为提交的事物仅仅每秒才flush一次到redo日志,值为0时的速度是最快的,但是在系统崩溃时可能会丢失一些数据,只适用于备份节点)

innodb_flush_method fdatasync (在有硬件raid控制器,并且独立缓存采用write-back机制,有电池断电保护时,配置成O_DIRECT,否则,设置为fdatasync)

innodb_log_buffer_size 1M (默认值,这项配置决定了为尚未执行的事物分配的缓存,默认值一般够用。如果事物中包含大量二进制大对象或者大文本字段的话,缓存会很快被填满并触发额外的IO,查看innodb_log_waits状态,不如不为0,增加)

query_cache_size (查询缓存,最佳方法是一开始就停用,设置该值为0,并利用其他方法加速查询,优化索引,增加拷贝分散负载或者启用额外的缓存)

log_bin 

skip_name_resolve

skip-locking (避免mysql的外部锁定,减少出错几率增强稳定性)

back_log=500 (这个值指出在mysql暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果在一个短时间内有很多连续,增大这个值。这个值制定到来的TCP/IP链接的侦听队列的大小.linux系统推荐设置为小于512的数字,跟系统本身的listen函数backlog大小有关)

key_buffer_size = 256M (指定索引的缓冲大小,增加客源得到更好的索引处理性能。该数值设置的过大会使服务器整体效率降低)

sort_buffer_size = 6M (查询排序时所能使用的缓冲区大小,每连接独占。)

wait_timeout = 10 (指定一个请求的最大链接时间)


提升性能的建议:

1.如果opened_tables太大,应该把my.cnf中的table_cache变大

2.如果Key_reads太大,则应该把my.cnf中key_buffer_size变大.可以用Key_reads/Key_read_requests计算出cache失败率

3.如果Handler_read_rnd太大,则你写的SQL语句里很多查询都是要扫描整个表,而没有发挥索引的键的作用

4.如果Threads_created太大,就要增加my.cnf中thread_cache_size的值.可以用Threads_created/Connections计算cache命中率

5.如果Created_tmp_disk_tables太大,就要增加my.cnf中tmp_table_size的值,用基于内存的临时表代替基于磁盘的


系统级别优化:

 vi /etc/fstab下

noatime

 确保在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用 atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。  ---需要remount。

  mount -o remount,rw / 效果很明显

内存配置:numa=off

另外可以设置 vm.zone_reclaim_mode=0尽量回收内存

IO调度器修改:

   scheduler:/sys/block/sda/queue/scheduler   //sda == {DEVICE-NAME}

   nr_requests:/sys/block/sda/queue/nr_requests  //磁盘队列长度

   read_ahead_kb:/sys/block/sda/queue/read_ahead_kb  //减少预读



本文出自 “tring” 博客,请务必保留此出处http://warcraft3.blog.51cto.com/6514883/1427299