Linux

MySQL 性能調整

  • January 7, 2013
[mysqld]
myisam_repair_threads=4
key_buffer = 64M
myisam_sort_buffer_size = 32M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
table_cache = 1024
thread_cache_size = 16K
wait_timeout = 20
connect_timeout = 10
tmp_table_size = 128M
max_heap_table_size = 128M
max_allowed_packet = 160M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1


[mysqld_safe]
open_files_limit = 8192

[mysqldump]
quick
max_allowed_packet = 512M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M

是否每晚添加 10GB mysql 數據庫轉儲的快速幫助?

我還補充說myisam_repair_threads=4,這有助於修復損壞的表問題,有時似乎轉儲大型數據庫會導致損壞

這裡是quick的官方解釋:

This option is useful for dumping large tables. It forces mysqldump to 
retrieve rows for a table from the server a row at a time rather than 
retrieving the entire row set and buffering it in memory before writing it out.

因此,對於大型表,如果您無法將表放入記憶體,這將有所幫助。

但是,需要注意的是,如果您使用的是 MyISAM,它會在每次讀取一行時鎖定表(它在轉儲行集時也會鎖定它)。InnoDB 使用行級鎖定而不是表級鎖定,因此備份起來會容易得多。如果你有一個大表,它可能應該使用 InnoDB 而不是 MyISAM。這在進行備份時會有很大的不同。

我很驚訝使用 mysqldump 會導致損壞,我會調查可能導致這種情況的其他來源。

引用自:https://serverfault.com/questions/463742