mysql优化重要参数整理(初级篇)
来自: http://my.oschina.net/u/2460176/blog/607841
innodb_flush_log_at_trx_commit:
默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。
innodb_write(read)_io_threads:
MySQL5.5.x中用2个innodb_read_io_threads和Innodb_write_io_threads取代此版本之前参数,该参数值之和=2*cpu个数*cpu核数;如果你的系统读>写,可以设置innodb_read_io_threads值相对大点;反之,也可以.
log-slave-updates:
用于open on m--->s--->s or open on slave backup,开启备库的binlog。
log_bin_trust_function_creators:
参数缺省0,是不允许function的同步的。一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave 同步报错。
sync_binlog:
默认情况下,并不是每次写入时都将binlog与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能binlog中最后的语句丢 失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘同步。
innodb_thread_concurrency :
并发线程数量结合innodb _thread_sleep_delay,nnodb_concurrency_tickets。innodb用自己的线程调度机制来控制线程如何进入innodb 内核工作,并执行相关的操作。 innodb_thread_concurrency变量就控制了进入内核的线程数量。0表示不限制进入内核的数量。如果innodb内核中已经有很多线程进入,达到一定数量后就不能再进入了。innodb使用了一种两阶段的方式控制线程进入内核,这种机制减少了操作系统因为线程之间的上下文切换带来的开销。
slow_query_log:
慢查询日志,通过long_query_time设置慢查询的时间。
thread_concurrency:
thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍
innodb_buffer_pool_size:
这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。
最重要的参数,设为内存的70%-80%。
max_connections:
max_connections是指MySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过'conn%'通配符查看当前状态的连接数量,以定夺该值的大小。MySQL服务器允许的最大连接数16384;查看系统当前最大连接数:show variables like 'max_connections';