mysql的大查询与复杂查询问题

34 阅读1分钟

一、大查询与内存使用率的关系

图片.png




二、当复杂查询结束后,DB内存使用率的变化

图片.png




三、影响内存波动的情况

1、排序和分组

2、查询缓存(8.0开始就废弃)

3、临时表

4、索引和数据页




四、优化大查询

1、优化查询逻辑

2、分批查询或分页查询

3、使用索引




五、大查询大致内存资源紧张的优化措施

1、调整innodb缓冲池大小


# 主机内存的70%-80%,适当的缓冲池大小可以减少磁盘IO 
innodb_buffer_pool_size = 80%


2、调整临时表大小

大查询可能会创建临时表,这些临时表默认存储在内存中。如果临时表过大,可能会导致内存不足。

图片.png

3、限制最大连接数

图片.png

4、调整排序缓冲区大小

图片.png

5、调整读取缓冲区大小

图片.png

6、关闭查询缓存

7、调整线程缓存大小

图片.png

8、启用慢查日志

图片.png

9、调整事务日志缓冲区大小

图片.png

10、调整事务日志文件大小

图片.png