暂无图片
MySQL数据库内存升高问题
我来答
分享
徐孝亮
2023-10-10
MySQL数据库内存升高问题

一个配置为2核4G配置的MySQL数据库,内存一下子从50%升高到95%了。

当时的操作:
1. DELETE 一个600w的表 where < xxxxxxxx(走了主键索引)
2. select count(*) 一个600w的表 where id < xxxxxxxx  (没走主键索引)

大家讨论下:内存升高是谁导致的?说下原因。

  1. A. delete
  2. B. select count(*) 
  3. C. delete阻塞了select count(*)

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
chengang

首先排除C
不管是在什么隔离级别。delete 都不会阻塞 select.

A也有可能

A需能命中主键,假如符合条件的行很多。那么就会加很多行锁。也会产生较大的undolog

B可能性更大
慢SQL 一般是造成CPU升高的主要原因

暂无图片 评论
暂无图片 有用 2
徐孝亮
题主
2023-10-10
delect和select count(*) 的条件是一样的,都是id< 一个很大的数字,可以理解为删除或者查询表里的绝大部分数据。
徐孝亮
题主
2023-10-10
问题点在是delete占了内存还是select count(*)占了内存
日拱一卒

大表里不走索引应该是最大可能。
如果delete删除的数很多,也是个帮凶,如果很少可能瞬间就完成。

暂无图片 评论
暂无图片 有用 0
笑看风云

A

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏