key_buffer_size - 这对MyISAM表往说十分紧张。假设只是利用MyISAM表,可以把它设置为可用内存的
30-40%。合理的值取决于索引大年夜小、数据量和背载 --
记住,MyISAM表会利用操做系统的缓存往缓存数据,是以需求留出部分内存给它们,许多状况下数据比索引大年夜多了。虽然云云,需求总是搜检能可全部的
key_buffer 都被哄骗了 -- .MYI 文件只有 1GB,而 key_buffer 却设置为 4GB
的状况少短常少的。这么做太糜掷了。假设你很少利用MyISAM表,那么也保留低于 16-32MB 的key_buffer_size
以适应给予磁盘的暂时表索引所需。
innodb_buffer_pool_size -
这对Innodb表往说十分紧张。Innodb比较MyISAM表对缓冲更为敏感。MyISAM可以在默许的 key_buffer_size
设置下运转的可以,然则Innodb在默许的innodb_buffer_pool_size
设置下却跟蜗牛似的。由于Innodb把数据战索引都缓存起往,无需留给操做系统太多的内存,是以假设只需求用Innodb的话则可以设置它高达
70-80% 的可用内存。一些利用于 key_buffer 的规定规矩有 --
假设你的数据量没有大年夜,而且没有会暴删,那么无需把innodb_buffer_pool_size
设置的太大年夜了。
innodb_additional_pool_size -
这个选项对性能影响实在没有太多,最少在有差没有多足够内存可分派的操做系统上是这样。没有过假设你仿照照旧想设置为
20MB(或更大年夜),是以就需求看一下Innodb其他需求分派的内存有几。
innodb_log_file_size
在高写入背载特别是大年夜数据集的状况下很紧张。这个值越大年夜则性能相对越高,然则要留神到可能会删加恢复时候。我经常设置为64-512MB,按照管事器大年夜小而异。
innodb_log_buffer_size
默许的设置在中等强度写入背载和较短事务的状况下,管事器性能还可以。假设存在更新操做峰值或背载较大年夜,就应该考虑加大年夜它的值了。假设它的值设置太高了,可能会糜掷内存
--
它每秒都会改革一次,是以无需设置超越1秒所需的内存空间。通常8-16MB就足够了。越小的系统它的值越小。
innodb_flush_logs_at_trx_commit
能可为Innodb比MyISAM慢1000倍而头大年夜?看往也许你忘了修改这个参数了。默许值是
1,这意味着每次提交的更新事务(或每一个事务以外的语句)都会改革到磁盘中,而这相等消耗资源,特别是出有电池备用缓存时。许多利用法式,特别是从
MyISAM改动畴昔的那些,把它的值设置为 2
就可以够够了,也就是没有把日记改革到磁盘上,而只改革到操做系统的缓存上。日记仿照照旧会每秒改革到磁盘中往,是以通常没有会拾得每秒1-2次更新的斲丧。假设设置为0就快许多了,没有过也相对没有战平了
-- MySQL管事器瓦解时就会拾得一些事务。设置为2批示拾得改革到操做系统缓存的那部份事务。
table_cache --
翻开一个表的开销可能很大年夜。比方MyISAM把MYI文件头标志该表正在利用中。你必定没有期视这种操做太频仍,所以通常要加大年夜缓存数量,使得足以最大年夜限度地缓存翻开的表。它需求用到操做系统的资源和内存,对当前的硬件设置设备摆设往说当然没有是甚么成绩了。假设你有200多个表的话,那么设置为
1024
也许比较合适(每一个线程都需求翻开表),假设毗连数比较大年夜那么就加大年夜它的值。我曾经见过设置为100,000的状况。
thread_cache -- 线程的创坐战销誉的开销可能很大年夜,由于每一个线程的毗连/断开都需求。我通常最少设置为
16。假设利用法式中有大年夜量的腾跃并发毗连而且 Threads_Created
的值也比较大年夜,那么我就会加大年夜它的值。它的方针是在通常的操做中无需创坐新线程。
query cache --
假设你的利用法式有大年夜量读,而且出有益用法式级其它缓存,那么这很有效。没有要把它设置太大年夜了,由于想要护卫它也需求许多开销,这会招致MySQL变慢。通常设置为
32-512Mb。设置完以后最好是跟踪一段时候,审查能可运转劣秀。在必然的背载压力下,假设缓存命中率太低了,就启用它。
留神:就像你看到的上里这些齐局表量,它们都是按照硬件设置设备摆设和没有同的存储引擎而没有同,然则会话变量通常是按照没有同的背载往设定的。假设你只有一些简单的查询,那么就无需删加
sort_buffer_size 的值了,虽然你有 64GB 的内存。搞没有好也许会降落性能。
我通常在分析系统背载后才往设置会话变量。
MySQL的发止版曾经搜罗了各种 my.cnf 典范榜样文件了,可以做为设置设备摆设模板利用。