MySQL调优参数

innodb_buffer_pool_size

innodb_buffer_pool_size 参数控制了 InnoDB 在内存中缓存数据和索引的大小。这个参数直接影响 MySQL 的读性能。设置合适的大小能够减少从磁盘读取数据的需求,提高查询速度。默认值通常是可用内存的 70% 或者自适应调整大小,合适的设置应该视具体情况而定,应该设置为系统可用内存的一部分。

innodb_log_file_size

innodb_log_file_size 参数控制了重做日志文件的大小。重做日志用于崩溃恢复和一些随机IO操作(例如在页面中插入新行)。如果这个参数设置得太小,系统需要更频繁地切换重做日志,这会导致性能下降。如果设置得太大,则会浪费空间。一般建议将 innodb_log_file_size 设置为 25% 左右的 innodb_buffer_pool_size。

innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit 控制了 InnoDB 写入事务日志的方式。它具有三个值:1(每次提交都将事务日志写入磁盘)、2(每秒将日志写入磁盘)、0(每次提交事务都不需要写入磁盘日志)。当值为 0 或者 2 时,性能会得到改善。但这会增加数据新鲜度丢失风险,所以值得权衡。如果数据库对一定的数据丢失容忍性较高,可以适量提高此参数的值。

table_open_cache

table_open_cache 参数决定了用来存储打开表信息的缓存数量。如果这个值太小,当有大量查询时会导致表被不断地打开和关闭,从而导致性能下降。设置适当的缓存大小可以减少查询时的打开和关闭表的操作。通常,应该将 table_open_cache 设置为大约系统中打开表数量的 2 倍。

thread_cache_size

thread_cache_size 参数控制了线程缓存的大小。如果这个参数设置得太小,系统会频繁地创建和销毁线程,从而导致性能下降。

max_connections

max_connections 参数限制了可以同时并发执行的连接数。如果这个参数设置得太低,系统无法支持足够的并发操作。如果设置得太高,系统可能会遇到性能问题,因为每个连接都需要占用一些内存和 CPU。

MySQL调优参数查询

-- java链接到3306的线程 
netstat -anp | grep 3306 | grep java
-- 事务
SHOW PROCESSLIST;
-- 统计连接数
select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip; 
 
-- InnoDB 缓冲池大小
show variables like '%innodb_buffer_pool_size%';
-- redo log 文件大小
show variables like '%innodb_log_file_size%';
-- 使用连接数
show status like 'max%connections'; 
-- 最大连接数
show variables like 'max_connections';