我需要从包含列的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。
发布于 2017-09-19 16:01:14
enforcing dict cache limit是InnoDB进程的后台状态。在这种状态下,InnoDB检查表字典缓存(例如表元数据)的使用情况,并在需要时清理字典缓存。
根据MySQL开发人员为错误报告84424提供的指导
为了缓解这个问题,你必须做几件事:
您可能需要重新启动服务器才能从问题中完全恢复过来。
https://stackoverflow.com/questions/46304613
复制相似问题