mysql优化参数

发布时间 2023-05-03 19:38:16作者: 余生请多指教ANT
-- 隔离级别
select * from `performance_schema`.variables_by_thread where variable_name='transaction_isolation';
-- 全局级别和回话级参数  作用于
set session binlog_rows_query_log_events=on;
set GLOBAL binlog_rows_query_log_events=on;


-- 缓冲区大小
set global sort_buffer_size=16*1024*1024;
-- 对设置之后的会话有效,对之前连接的会话无效
SELECT @@global.sort_buffer_size,@@session.sort_buffer_size;


SELECT  @@session.max_join_size;

set @@session.max_join_size=DEFAULT;-- 设置后为mysql内置默认值,而不是配置文件里设置的值
set @@session.max_join_size=@@global.max_join_size;-- 会话级别设置全局

-- 查看连接字符集
show variables like '%_connection';

-- 计算负载高峰时占用的总内存,这个记过通常偏大,因为所有的线程都同时用到设定内存分配的最大值的情况几乎不存在,每个线程如果只是处理简单的工作,大约需要256KB的内存,

SELECT
	((
			@@key_buffer_size + @@innodb_buffer_pool_size + @@innodb_log_buffer_size + @@binlog_cache_size + @@max_connections 
			) * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@thread_stack + @@tmp_table_size )/(
			1024 * 1024 * 1024 
			) 
	) AS max_memery_gb;

-- mysql实际使用的内存总和
SELECT * from sys.memory_global_total;

-- 确认是否开启了所有的内存监控项
select * from performance_schema.setup_instruments where name like '%memory%' and enabled!='YES';

sys.memory_global_total 统计值不准有三个原因

1)没有在实例启动时就开启所有的内存监控项

MySQL 8.0 之前版本默认只开启了performance_schema相关内存时间监控项。其他内存监控项默认都未启用,如需启用需要在配置文件中显示指定,可以通过如下方案启动所有内存监控项:

在配置文件中添加 performance-schema-instrument='memory/%=ON' 重启实例