Linux环境下MariaDB性能优化策略
innodb_buffer_pool_size:设置为系统内存的50%-80%(InnoDB引擎核心参数,用于缓存数据和索引,直接影响性能)。key_buffer_size:用于MyISAM引擎的索引缓存,若使用InnoDB可适当减小。max_connections:根据服务器资源和应用需求调整(如500-1000),避免过多连接导致资源耗尽。thread_cache_size:设置为100-200,减少线程创建/销毁的开销。innodb_log_file_size:增大重做日志文件大小(如256M-512M),减少日志切换频率,提升写入性能。innodb_flush_log_at_trx_commit:设置为2(牺牲少量数据安全性换取性能,适用于对数据一致性要求不高的场景)。tmp_table_size和max_heap_table_size:设置为256M-512M,避免临时表过大导致磁盘写入。WHERE、JOIN、ORDER BY的列创建索引(如主键、唯一索引、普通索引)。WHERE a=1 AND b=2),创建复合索引(如(a,b)),提高查询效率。ANALYZE TABLE更新索引统计信息,OPTIMIZE TABLE整理索引碎片,保持索引高效。EXPLAIN SELECT ...查看查询执行计划,识别全表扫描、索引未使用等问题。SELECT *:只选择需要的列,减少数据传输量。JOIN代替子查询(如INNER JOIN比子查询更高效)。WHERE子句:避免在索引列上使用函数或计算(如WHERE YEAR(create_time)=2025会导致索引失效)。LIMIT 10000,10),使用WHERE id > last_id LIMIT 10(基于游标的分页),减少查询范围。query_cache_size(如64M-256M)和query_cache_type=1,缓存重复查询结果(适用于读多写少的场景,高并发写入时可能降低性能)。OPTIMIZE TABLE命令整理表碎片(尤其针对频繁更新的表),提高数据读取效率。mysqldump或mariabackup备份数据,确保数据安全。SHOW STATUS、SHOW PROCESSLIST查看数据库状态(如连接数、查询数、锁等待);使用pt-query-digest分析慢查询日志,定位性能瓶颈。top、htop监控CPU使用率;vmstat、iostat监控内存和磁盘I/O;netstat监控网络流量,及时发现资源瓶颈。/etc/sysctl.conf,设置vm.swappiness=10(减少内存交换)、fs.aio-max-nr=65536(提升异步I/O性能);使用ulimit -n 65535增加文件描述符限制,避免连接数过多导致错误。