在 Debian 上优化 MySQL(通常是 MySQL / MariaDB)性能,可以从系统层、MySQL 配置、Schema 与 SQL、监控四个方面入手。下面给你一套实用、可落地的调优思路(以常见 Debian + MySQL 8.0 / MariaDB 10.x 为例)。
sysctl vm.swappiness=10
(写入 /etc/sysctl.conf 持久化)
noatime,nodiratime
echo deadline > /sys/block/sda/queue/scheduler
ulimit -n 65535
在 /etc/security/limits.conf 中配置 mysql 用户
配置文件一般在:
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
innodb_buffer_pool_size = 4G
8G 内存服务器示例
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
如果是金融级一致性要求,
trx_commit=1
max_connections = 500
thread_cache_size = 50
查看当前连接压力:
SHOW STATUS LIKE 'Threads_%';
query_cache_type = 0
(高并发下弊大于利)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
分析慢日志:
mysqldumpslow -s t /var/log/mysql/slow.log
SELECT *EXPLAIN 分析 SQLEXPLAIN SELECT * FROM orders WHERE user_id=1;
PARTITIONSHOW GLOBAL STATUS;
SHOW ENGINE INNODB STATUS;
mysqltunerapt install mysqltuner
mysqltuner
pt-query-digestinnodb_buffer_pool_size = 大
query_cache_type = 0
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 大
systemctl restart mysql
如果你愿意,可以:
my.cnf我可以直接帮你给出针对性配置参数。