MySQL是做网站时常用的数据库软件,其设置也会很大的影响内存的占用量,MySQL的默认设置,大概需要占用560MB的内存(服务器需要1GB内存才能基本稳定),对于小内存来说,不做一些优化的话,可能会导致数据库连接出错,导致网站无法访问。

设置项最低值

下面的一张表格是MySQL的默认设置和最小设置之间的比较:

设置项 默认 最低
innodb_buffer_pool_size 128M 5M
innodb_log_buffer_size 1M 256K
query_cache_size 1M 0
max_connections 151 1 (推荐最低设置为10)
key_buffer_size 8388608 8
thread_cache_size (自动配置) 0
host_cache_size (自动配置) 0
innodb_ft_cache_size 8000000 1600000
innodb_ft_total_cache_size 640000000 32000000
thread_stack 262144 131072
sort_buffer_size 262144 32K
read_buffer_size 131072 8200
read_rnd_buffer_size 262144 8200
max_heap_table_size 16777216 16K
tmp_table_size 16777216 1K
bulk_insert_buffer_size 8388608 0
join_buffer_size 262144 128
net_buffer_length 16384 1K
innodb_sort_buffer_size 1M 64K
binlog_cache_size 32K 4K
binlog_stmt_cache_size 32K 4K

配置文件修改

以上参数,在面板中可以直接设置,如无面板,需要修改文件设置

# /etc/my.cnf:
innodb_buffer_pool_size=5M
innodb_log_buffer_size=256K
query_cache_size=0
max_connections=10
key_buffer_size=8
thread_cache_size=0
host_cache_size=0
innodb_ft_cache_size=1600000
innodb_ft_total_cache_size=32000000
 
# per thread or per operation settings
thread_stack=131072
sort_buffer_size=32K
read_buffer_size=8200
read_rnd_buffer_size=8200
max_heap_table_size=16K
tmp_table_size=1K
bulk_insert_buffer_size=0
join_buffer_size=128
net_buffer_length=1K
innodb_sort_buffer_size=64K
 
#settings that relate to the binary log (if enabled)
binlog_cache_size=4K
binlog_stmt_cache_size=4K

管理面板

在AppNode面板中已经预设了几套配置,包含了64MB、128MB和1GB等,可自行选择。宝塔面板的MySQL配置模板最低为1GB,可以按照已有的设置按比例减小相应的设置项。两个面板在调整MySQL设置的时候都会显示所需的内存量,非常直观,调整好以后保存重载服务即可。

本文参考:https://blog.kuoruan.com/72.html