Mysql 参数优化

文章来源:
http://blog.163.com/wangsen_315/blog/static/946141420089792222353/
(1)、back_log: phpma.com
要求 MySQL 能有的链接数量。当主要MySQL线程在一个很短期内获得很是多的链接请求,这就起做用,而后主线程花些时间(尽管很短)检查链接而且启动一个新线程。
back_log 值指出在MySQL暂时中止回答新请求以前的短期内多少个请求能够被存在堆栈中。只有若是指望在一个短期内有不少链接,你须要增长它,换句话说,这值对到来的TCP/IP链接的侦听队列的大小。你的操做系统在这个队列大小上有它本身的限制。试图设定back_log高于你的操做系统的限制将是无效的。
当你观察你的主机进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待链接进程时,就要加大 back_log 的值了。默认数值是50,我把它改成500。

        (2)、interactive_timeout: phpma.com
服务器在关闭它前在一个交互链接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,我把它改成7200。

        (3)、key_buffer_size: phpma.com
索引块是缓冲的而且被全部的线程共享。key_buffer_size是用于索引块的缓冲区大小,增长它可获得更好处理的索引(对全部读和多重写),到你能负担得起那样多。若是你使它太大,系统将开始换页而且真的变慢了。默认数值是8388600(8M),个人MySQL主机有2GB内存,因此我把它改成 402649088(400MB)。

        (4)、max_connections: phpma.com
容许的同时客户的数量。增长该值增长 mysqld 要求的文件描述符的数量。这个数字应该增长,不然,你将常常看到 Too many connections 错误。 默认数值是100,我把它改成1024 。
phpma.com
        (5)、record_buffer:
每一个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。若是你作不少顺序扫描,你可能想要增长该值。默认数值是131072(128K),我把它改成16773120 (16M)

        (6)、sort_buffer: phpma.com
每一个须要进行排序的线程分配该大小的一个缓冲区。增长这值加速ORDER BY或GROUP BY操做。默认数值是2097144(2M),我把它改成 16777208 (16M)。

        (7)、table_cache: phpma.com
为全部线程打开表的数量。增长该值能增长mysqld要求的文件描述符的数量。MySQL对每一个惟一打开的表须要2个文件描述符。默认数值是64,我把它改成512。

      (8)、thread_cache_size: phpma.com
能够复用的保存在中的线程的数量。若是有,新的线程从缓存中取得,当断开链接的时候若是有空间,客户的线置在缓存中。若是有不少新的线程,为了提升性能能够这个变量值。经过比较 Connections 和 Threads_created 状态的变量,能够看到这个变量的做用。我把它设置为 80。

       (9)mysql的搜索功能 phpma.com
用mysql进行搜索,目的是能不分大小写,又能用中文进行搜索
只需起动mysqld时指定 --default-character-set=gb2312


     (10)、wait_timeout: phpma.com
服务器在关闭它以前在一个链接上等待行动的秒数。 默认数值是28800,我把它改成7200。

注:参数的调整能够经过修改 /etc/my.cnf 文件并重启 MySQL 实现。这是一个比较谨慎的工做,上面的结果也仅仅是个人一些见解,你能够根据你本身主机的硬件状况(特别是内存大小)进一步修改。 
 

 

 
innodb_buffer_pool_size--------这个根据数据量来设定
如 果用Innodb,那么这是一个重要变量。相对于MyISAM来讲,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感受在爬了。 Innodb的缓冲池会缓存数据和索引,因此不须要给系统的缓存留空间,若是只用Innodb,能够把这个值设为内存的70%-80%。和 key_buffer相同,若是数据量比较小也不怎么增长,那么不要把这个值设过高也能够提升内存的使用率。
innodb_additional_pool_size 
这个的效果不是很明显,至少是当操做系统能合理分配内存时。但你可能仍须要设成20M或更多一点以看Innodb会分配多少内存作其余用途。
innodb_log_file_size
对于写不少尤为是大数据量时很是重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我通常用64M-512M,具体取决于服务器的空间。
innodb_log_buffer_size 
默认值对于多数中等写操做和事务短的运用都是能够的。如 果常常作更新或者使用了不少blob数据,应该增大这个值。但太大了也是浪费内存,由于1秒钟总会 flush(这个词的中文怎么说呢?)一次,因此不须要设到超过1秒的需求。8M-16M通常应该够了。小的运用能够设更小一点。
innodb_flush_log_at_trx_commit  (这个很管用)  抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都须要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于不少运用,特别是从MyISAM表转过来的是能够的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,因此你通常不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即便MySQL挂了也可能会丢失事务的数据。而值2只会在整个操做系统 挂了时才可能丢数据
相关文章
相关标签/搜索