MySQL有大量可以修改的参数(但不应该随便去修改),通常只需要把基本项配置正确,应该将更多的时间花在表结构、索引优化,sql查询优化。然而知道一些常见参数的作用还是有用的。

key_buffer_size

设置这个变量可以一次性为键缓存区分配所有指定的空间。操作系统并不会真的立刻分配内存,而是到使用时才分配内存。key_buffer_size只对MyISAM表起作用。MyISAM的表使用键高速缓存来缓存索引,这个键高速缓存的大小则通过 key-buffer-size 参数来设置。如果应用系统中使用的表以MyISAM存储引擎为主,则应该适当增加该参数的值,以便尽可能的缓存索引,提高访问的速度。

table_open_cache

每当MySQL访问一个表时,如果在表缓冲区中还有空间(数量的空余),该表就被打开并放入其中,这样可以更快地访问表内容。这个值设置的是表的缓存数量。

thread_cache_size

每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,如果线程缓存中有空闲线程,这时候如果建立新连接,MySQL就会很快的响应连接请求。可以通过

mysql> show variables like '%thread_cache_size';

来查看。

query_cache_size

MySQL在启动时,一次性分配并初始化这块内存。查询缓存默认是关闭的。

read_buffer_size

MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能

read_rnd_buffer_size

MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率。MySQL只会在有查询需要使用时才会为该缓存分配内存,并且只会分配需要的内存大小而不是全部指定大小。

sort_buffer_size

MySQL只有在查询需要排序操作时才会为该缓存分配内存。该参数是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存,所以这个值不应该设置过大。

innodb_buffer_pool_size

InnoDB使用该参数指定大小的内存来缓冲数据和索引,这个是Innodb引擎中影响性能最大的参数,InnoDB严重依赖缓存池,所以该参数应该合理设置。

innodb_log_buffer_size

这项指定InnoDB用来存储日志数据的缓存大小,如果您的表操作中包含大量并发事务(或大规模事务),并且在事务提交前要求记录日志文件,请适当调高此项值,以提高日志效率。

innodb_file_per_table

该参数在 MySQL5.6.6版本默认是开启的,它使每个表的数据、索引存放在自己单独的表空间中。


ufdf
6.7k 声望407 粉丝