暂无图片
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如何避免死锁?
回答 1
已采纳
避免死锁应注意以下几点:1)以固定的顺序访问表和行。比如两个任务批量更新的情形,简单方法是对id列表先排序,后执行,这样就避免了交叉等待锁的情形;又比如将两个事务的SQL顺序调整为一致,也能避免死锁。
MySQL有没有方法把text的字段里的带有html的如<p>这种的符号去掉?
回答 1
只能通过正则去刷了
MySQL从哪个版本开始解决了回滚表空间无法自动回收的问题?
回答 2
已采纳
MySQL5.7版本
MySQL5.7 mysqldump恢复数据报错Cannot create a JSON value from a string with CHARACTER SET 'binary'
回答 1
已采纳
可以试试setnamesutf8mb4;之后导入数据看看
MySQL支持的复制类型有哪几种?
回答 1
已采纳
MySQL支持的复制类型有如下几种:1)基于语句的复制(逻辑复制):在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。2)基于行的复制:把改变的内
Flask+MySQL + workbench, 如何连接并且将前端数据INSERT 到MySQL 的workbench?
回答 1
已采纳
MySQLWorkbench为数据库管理员、程序开发者和系统规划师提供可视化的Sql开发、数据库建模、以及数据库管理功能.应该是插入到数据库表中吧?网上搜索一下相关的例子都可以的吧
MHA是怎样选择新主的?
回答 1
已采纳
MHA在选择新主时,会将所有存活的从库分为以下几类:·&nbsp;存活节点组:所有存活的从节点。·&nbsp;latest节点组:选取Binlog最近的从节点作为latest节点。·&nbsp;优选节
MySQL5.7哪个子版本稳定?
回答 3
已采纳
当前稳定的GA小版本MySQL5.7.36,具体可参考官方文档
为什么mysql服务已经设置了开机自启,为什么还是没启动?
回答 4
如果是修改的/etc/rc.local设置开机启动的话,需要保障/etc/rc.local和/etc/rc.d/rc.local有执行权限
本来mysql这个字段有值,更新为null,这个时候同步到elasticsearch, es数据没有变化, 自动忽略了为null值的更新,应该怎么处理?
回答 1
已采纳
mysql这个字段有值,更新为null–&gt;可以改为空串'',而不用null