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

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

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

A

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql如何实现oracle的instr功能,可以指定开始检索的位置?
回答 2
mysql支持instr函数,和oracle上的instr用法一样
mysql如何查看统计信息的更新时间?哪个系统表存储统计信息呢?
回答 1
selectfrommysql.innodbtablestats;selectfrommysql.innodbindexstats;
mysql造成数据不一致的原因
回答 3
已采纳
造成主从不一致的原因(1)主库binlog格式为Statement,同步到从库执行后可能造成主从不一致。(2)主库执行更改前有执行setsqllogbin0,会使主库不记录binlog,从库也无法变更
有没有哪位大佬给个实现 第一个结果集转换成第二个结果集格式的SQL写法
回答 1
已采纳
有几种方式,是通过SELECT…CASE写法函数计算方式,另一种是pivot,看看符合不符合要求。自己写,才能理解
mysql5.7实例每次异常关闭后,重启报PID file already exists
回答 1
已采纳
判断一下文件是否存在,存在就删除或者直接在启动脚本里先删除一遍pid文件
mysql的错误日志怎么清理 ,可以直接清空吗?
回答 1
已采纳
可以。慢日志也可以。不过建议你切分报错。日后查问题好查啊。
MySQL 中间件用哪个做负载均衡?
回答 2
mysqlrouter吧,配置和使用都很方便
mysql的binlog_order_commits设为off的后果是什么
回答 1
MySQL的binlogordercommits参数的默认值为OFF,即关闭状态,如果将其设置为ON,则会强制将binlog和InnoDB的提交顺序保持一致。当binlogordercommits参数
MySQL tinyint是不是比int好用,tinyint占内存少?
回答 2
这个主要看你要存的数据有多长,没有前提条件,不能说哪个更好用
为什么mysql会在0点弹出cmd窗口又马上消失啊?
回答 2
已采纳
看下Windows的计划任务程序,是否设置了0点运行一个bat程序了。