mysql5.7单表500万_mysql 5.7单表300万数据,性能严重下降,如何破?

在MySQL 5.7环境下,面对单表300万数据导致查询性能下降的问题,通过调整innodb_buffer_pool_size参数至2G以改善磁盘IO,从而显著提升查询效率。解决方案指出,内存大小对数据库性能影响显著,增大缓冲池可以减少磁盘负载,提高系统响应速度。
摘要由CSDN通过智能技术生成

问 题

环境:

DB: mysql 5.7.xx

OS: windows server 2012 r2

CPU: E3 1220-V5

内存: 4G。

数据库配置(基本上是默认配置):

join_buffer_size = 128M

sort_buffer_size = 2M

read_rnd_buffer_size = 2M

innodb_buffer_pool_size = 128M

表现:

有个表service_log,

其中有ID, DIAL_NUMBER, contact_name, contact_result, remark, CREATE_TIME等20多个常规字段。ID是PK,在contact_name,create_time等列上建有单独索引。

此表每日产生的新数据大概在1万左右,目前有数据近300万。

有一个查询,查询字段较多:

select id, dial_number, contact_name ....

from service_log

where create_time between '2016-10-01' and '2016-10-02'

从300万数据中,查询出近8000条数据,耗时大概在40秒左右。

查看执行计划,已经用了create_time上的索引。

显然这个效率很难接受,但是索引已经用上,实在想不出其他办法了。

请问除了分区,还有什么好办法吗?

解决方案

innodb_buffer_pool_size 这个太小了改成2G先试试,

磁盘和内存的性能差了几十倍,128M让你的数据操作对磁盘进行了IO, innodb_buffer_pool_size这个加大应该就好好多了

这个和索引已经没有关系了,是磁盘io造成的问题,你看看任务管理器的磁盘性能,随着buffer加大,磁盘负载会下降,这个就和系统内存小会卡一样,给mysql的内存小也会卡。别的也会造成卡,应该没有innodb_buffer_pool_size这个明显

992918a26da18f46479e2b9a26bece7f.png

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值