Ubuntu Mariadb内存使用优化策略
-
调整关键配置参数
innodb_buffer_pool_size:设置为服务器总内存的50%-80%,用于缓存InnoDB表数据和索引,减少磁盘I/O。innodb_log_file_size:适当增大(如256M),减少日志切换频率,提升写入性能。max_connections:根据业务需求合理设置,避免过多连接占用内存,可配合thread_cache_size缓存线程。- 查询缓存:若应用以读为主且数据变化少,可启用
query_cache_size(如64M),否则建议关闭。
-
优化内存分配器
- 使用
jemalloc替代默认的ptmalloc,降低内存碎片,提升多线程场景下的内存利用率。- 安装:
sudo apt-get install libjemalloc-dev - 配置:在
/etc/systemd/system/mariadb.service.d/libs.conf中添加Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so",重启服务生效。
- 安装:
- 使用
-
硬件与系统优化
- 使用SSD:提升磁盘读写速度,降低I/O等待时间。
- 调整内核参数:修改
/etc/sysctl.conf,如降低vm.swappiness(如设为10),减少内存交换。
-
定期维护与监控
- 清理碎片:定期执行
OPTIMIZE TABLE整理表空间,减少内存占用。 - 监控工具:使用
Prometheus+Grafana或top/htop监控内存使用,及时发现异常。
- 清理碎片:定期执行
注意:修改配置前需备份数据,部分参数(如innodb_buffer_pool_size)修改后需重启服务生效。具体优化需结合业务负载和硬件资源调整。