首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么删除多个BLOB以状态锁定MySQL数据库:执行dict缓存限制?

为什么删除多个BLOB以状态锁定MySQL数据库:执行dict缓存限制?
EN

Stack Overflow用户
提问于 2017-09-19 15:41:41
回答 1查看 396关注 0票数 1

我需要从包含列的MySQL表中删除大约400行:

id - INT(11) training_id - INT(11) estimator_blob - LONGBLOB

estimator_blob的大小为32 Mb。

看起来像这样的查询:

DELETE FROM estimator WHERE training_id IN (1, 2, ..., 400);

锁定数据库。执行此查询后,向此表插入结果的所有新查询都会执行得非常慢。

在数据库状态(mysql> SHOW ENGINE INNODB STATUS;)中,我收到以下消息:

Process ID=2600, Main thread ID=139974149678848, state: enforcing dict cache limit

“强制执行dict缓存限制”到底是什么意思?是造成这种“锁”的原因吗?

增加innodb_buffer_pool_size没有帮助。

我在70‘m内存的机器上使用MySQL 5.7.19-0ubuntu0.16.04.1。

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 16:01:14

enforcing dict cache limit是InnoDB进程的后台状态。在这种状态下,InnoDB检查表字典缓存(例如表元数据)的使用情况,并在需要时清理字典缓存。

根据MySQL开发人员为错误报告84424提供的指导

为了缓解这个问题,你必须做几件事:

  • 增加额外的内存池
  • 增加MySQL可用的文件句柄总数
  • 增加InnoDB的文件句柄数量
  • 提高操作系统上I/O的性能

您可能需要重新启动服务器才能从问题中完全恢复过来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46304613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档