一些mysql启动参数的说明和优化方法

2019-01-03 18:30:25王冬梅


  如果你有较少的内存和大量的连接,使用这样一些东西:

  shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k

  -O record_buffer=100k &

  或甚至:

  shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k

  -O table_cache=32 -O record_buffer=8k -O net_buffer=1K &

  如果有很多连接,“交换问题”可能发生,除非mysqld已经被配置每个连接使用很少的内存。当然如果你对所有连接有足够的内存,mysqld执行得更好。

  注意,如果你改变mysqld的一个选项,它实际上只对服务器的那个例子保持。

  为了明白一个参数变化的效果,这样做:

  shell> mysqld -O key_buffer=32m --help

  保证--help选项是最后一个;否则,命令行上在它之后列出的任何选项的效果将不在反映在输出中。

  重要的MySQL启动选项

  back_log 如果需要大量新连接,修改它。

  thread_cache_size 如果需要大量新连接,修改它。

  key_buffer_size 索引页池,可以设成很大。

  bdb_cache_size BDB表使用的记录和键吗高速缓存。

  table_cache 如果有很多的表和并发连接,修改它。

  delay_key_write 如果需要缓存所有键码写入,设置它。

  log_slow_queries 找出需花大量时间的查询。

  max_heap_table_size 用于GROUP BY

  sort_buffer 用于ORDER BY和GROUP BY

  myisam_sort_buffer_size 用于REPAIR TABLE

  join_buffer_size 在进行无键吗的联结时使用。

  MySQL高速缓存(所有线程共享,一次性分配)

  键码缓存:key_buffer_size,默认8M。

  表缓存:table_cache,默认64。

  线程缓存:thread_cache_size,默认0。

  主机名缓存:可在编译时修改,默认128。

  内存映射表:目前仅用于压缩表。

  注意:MySQL没有行高速缓存,而让操作系统处理

  MySQL缓存区变量(非共享,按需分配)

  sort_buffer:ORDER BY/GROUP BY

  record_buffer:扫描表。

  join_buffer_size:无键联结

  myisam_sort_buffer_size:REPAIR TABLE

  net_buffer_length:对于读SQL语句并缓存结果。

  tmp_table_size:临时结果的HEAP表大小。