ubuntu

Ubuntu MariaDB内存配置建议

小樊
45
2025-11-26 23:08:48
栏目: 云计算

Ubuntu MariaDB 内存配置建议

一 核心原则与快速建议

二 关键内存参数与作用边界

参数 作用 建议范围 要点
innodb_buffer_pool_size InnoDB 数据与索引缓存 专用库:内存的50%–75%;混布:50%–70% 越大越好,但避免挤占系统与其他服务内存
innodb_buffer_pool_instances 缓冲池分片 1–16,每个实例≥1GB 提升并发与减少锁争用,通常设为 CPU 核心数的1–2倍
key_buffer_size MyISAM 索引缓存 仅 MyISAM:内存的**~20%;否则8–64M** 若基本不用 MyISAM,保持较小值即可
query_cache_type / query_cache_size 查询缓存 建议:OFF / 0;若启用:≤50M 写多或高并发下收益低、争用重
max_connections 最大连接数 依业务与资源定 过高会放大 per-thread 内存开销
thread_cache_size 线程缓存 16–32 起步 降低线程创建/销毁成本
table_open_cache 表句柄缓存 2000–10000 结合 Opened_files/Uptime 调整
tmp_table_size / max_heap_table_size 内存临时表上限 两者取相同值,如64–256M 超过上限会落盘,影响性能
innodb_log_file_size 重做日志文件大小 256M–1G 大日志可减少检查点刷写,但崩溃恢复更慢
innodb_log_buffer_size 日志缓冲区 16–64M 一般无需过大
innodb_flush_log_at_trx_commit 事务日志刷盘策略 1(最安全)/ 2(性能更好) 0/2 有丢失最近秒级事务的风险
read_buffer_size / read_rnd_buffer_size / sort_buffer_size / join_buffer_size 会话级操作缓冲 谨慎小幅上调 每个连接都会分配,过高会放大总内存

三 不同内存规格的起步配置示例

总内存 专用 InnoDB 起步配置 混布或低内存起步配置
2GB innodb_buffer_pool_size=1G;innodb_buffer_pool_instances=1;key_buffer_size=16M;query_cache_type=OFF;max_connections=150;tmp_table_size/max_heap_table_size=64M;innodb_log_file_size=256M;innodb_log_buffer_size=16M;innodb_flush_log_at_trx_commit=1 更保守:innodb_buffer_pool_size=512M;max_connections=100;其他同左
4GB innodb_buffer_pool_size=2–3G;innodb_buffer_pool_instances=2–4;key_buffer_size=16M;query_cache_type=OFF;max_connections=200–300;tmp_table_size/max_heap_table_size=128M;innodb_log_file_size=256M;innodb_log_buffer_size=32M;innodb_flush_log_at_trx_commit=1 innodb_buffer_pool_size=2G;max_connections=200;其他同左
8GB innodb_buffer_pool_size=5–6G;innodb_buffer_pool_instances=4–8;key_buffer_size=32M;query_cache_type=OFF;max_connections=300–500;tmp_table_size/max_heap_table_size=128–256M;innodb_log_file_size=512M;innodb_log_buffer_size=32M;innodb_flush_log_at_trx_commit=1/2 innodb_buffer_pool_size=4G;max_connections=300;其他同左
16GB innodb_buffer_pool_size=10–12G;innodb_buffer_pool_instances=8;key_buffer_size=64M;query_cache_type=OFF;max_connections=500–800;tmp_table_size/max_heap_table_size=256M;innodb_log_file_size=1G;innodb_log_buffer_size=64M;innodb_flush_log_at_trx_commit=1/2 innodb_buffer_pool_size=8G;max_connections=500;其他同左

四 系统层面与监控要点

0
看了该问题的人还看了