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