mysql配置变量介绍
By admin
- One minute read - 19 wordskey_buffer_size
设置这个变量给键缓冲区(或者说键缓存)分配指定大小的空间。但是操作系统只有在实际用到这些空间的时候才会进行分配。例如,将键缓冲区大小设置为1GB,并不意味着服务器就会真正地给它分配1GB空间。
对一个已有的缓存设置非零值将会冲洗缓存,从技术上来说,这是一个在线操作,但是它会阻止所有访问该缓存的动作,直到缓存冲洗完成。
table_cache_size
设置这个变量是不会立即生效,要等到下一个线程打开表的时候才会生效。当它生效的时候,MYSQL会检查变量的值。如果值大于缓存中表的数量,线程就可以把新打开的表插入到缓存中。如果值小于缓存中表的数量,MySQL就会从缓存中删除掉没有使用的表。
thread_cache_size
设置这个变量不会立即生效,生效被延时到了下一次线程关闭的时候。在那时,MySQL检查缓存中是否有空间存储线程。如果是,它会把线程缓存起来,供另外一个连接使用。如果不是,它会直接结束掉线程。在这种情况下,缓存中线程的数量,以及线程缓存使用的内存数量不会立即就下降。只有当新连接为了使用线程把它从缓存中移走的时候才会看到下降。(MySQL只有在连接关闭的时候才会把线程加入缓存,也只有在创建新连接的时候 才从缓存中移除线程。)
query_cache_size
在服务器启用的时候,MySQL会为查询缓存一次性分配变量所定义数量的内存。如果更新了变量(即使把值设置为当前值),MySQL会立即删除掉所有缓存的查询,重新把缓存设置为定义的大小,并且重新初始化缓存的内存。
read_buffer_size
MySQL只有在需要的时候才会为该缓冲区分配内存,但是它会一次性地把指定的大小分配给该缓存。
read_rnd_buffer_size
MySQL只会在查询的时候才给这个缓冲区分配内存,并且只会分配所需要的内存。
sort_buffer_size
MySQL只有在查询需要排序的时候才会为这个缓冲区分配内存。但是只要发生了排序,MySQL会立即分配变量定义的所有内存,不管是否需要这么大的空间。
摘自《高性能MySQL》第6章 优化服务器配置 p206