我在一台拥有 8 GB RAM 的双核机器上运行 Ubuntu 上的 MySQL 5.0.75。我正在运行数据库的 Drupal 5 和 Drupal 6 站点。
我确信我的 MySQL 配置不是最佳的,但我想知道是否有任何可以解决的简单方法。这是当前设置的核心。
新的当前设置(原始设置位于底部)。顺便说一下,这是一台专用机器:
key_buffer = 2G
innodb_buffer_pool_size = 6G
innodb_additional_mem_pool_size = 16M
max_allowed_packet = 16M
sort_buffer_size = 128M
myisam_sort_buffer_size = 128M
read_buffer_size = 128M
join_buffer_size = 128M
read_rnd_buffer_size = 512M
thread_stack = 192K
thread_cache_size = 10
thread_concurrency = 8
innodb_thread_concurrency = 8
table_cache = 2048
query_cache_limit = 2M
query_cache_size = 128M
老的:
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 8
query_cache_limit = 1M
query_cache_size = 16M
expire_logs_days = 10
max_binlog_size = 100M
skip-federated
default-storage-engine = InnoDB
default-character-set = utf8
default-collation = utf8_general_ci
答案1
看起来您使用 InnoDB 作为主要数据库引擎类型,但您的配置没有 InnoDB 配置调整选项,这意味着您使用的是默认值。这些默认值开箱即用,大小适合 8Mb 的机器!
我建议以这些设置作为基础并从那里开始工作
innodb_file_per_table
set-variable = innodb_buffer_pool_size=2G
set-variable = innodb_log_files_in_group=4
set-variable = innodb_log_file_size=128M
set-variable = thread_cache_size=10
set-variable = table_cache=512
set-variable = query_cache_size=8M
您没有说 php 站点是否与您的 db 服务器共享同一台机器,因此您必须小心,不要让 MySQL 消耗太多的物理内存,以免导致机器交换。
我还建议您将这些设置添加到低速查询和查询计划较差的查询中。
log_slow_queries
log-queries-not-using-indexes
set-variable = long_query_time=1
答案2
您正在使用 InnoDB,因此您的innodb_buffer_pool
应尽可能大(相当于key_buffer
MyISAM)。在 8GB 的机器上,6GB 应该是一个合适的值。
如果您正在进行大量复杂查询,sort_buffer
那么tmp_table_size
可能也值得增加。