首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测到数据库死锁

检测到数据库死锁
EN

Drupal用户
提问于 2019-11-28 09:07:57
回答 3查看 1.2K关注 0票数 1

在Drupal 8中,我们得到了一些死锁条件--大部分与缓存有关。对于这个问题,有很多答案,但对于D8 (它有非常不同的缓存机制)就不是这么回事了。有没有解决/减轻问题的方法?

代码语言:javascript
复制
Drupal\Core\Entity\EntityStorageException: SQLSTATE[40P01]: Deadlock detected: 7 ERROR: deadlock detected DETAIL: 
Process 9131 waits for ShareRowExclusiveLock on relation 8341492 of database 8341380; blocked by process 9130. 
Process 9130 waits for ShareRowExclusiveLock on relation 8341562 of database 8341380; blocked by process 9131. 
HINT: See server log for query details.: LOCK TABLE {cache_bootstrap} IN SHARE ROW EXCLUSIVE MODE; 
Array ( ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() 
    (line 847 of /var/xxx/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).
EN

回答 3

Drupal用户

发布于 2019-11-29 08:50:42

您可以尝试将以下行添加到settings.php文件中:

代码语言:javascript
复制
$databases['default']['default']['init_commands'] = array(
  'isolation' => "SET SESSION tx_isolation='READ-COMMITTED'"
);

https://support.acquia.com/hc/en-us/articles/360005253954-Fixing-database-deadlocks

票数 1
EN

Drupal用户

发布于 2019-11-28 10:01:30

您可以启用替代缓存实现(使用缓存引导) 模缓存雷迪斯。了解更多关于死锁的信息:https://support.acquia.com/hc/en-us/articles/360005253954-Fixing-database-deadlocks

票数 0
EN

Drupal用户

发布于 2019-11-28 10:33:26

不久前我有个bug,我发现了这个修复drupal中的死锁

代码语言:javascript
复制
ALTER TABLE semaphore ENGINE = MEMORY;
ALTER TABLE semaphore DROP PRIMARY KEY;
ALTER TABLE semaphore ADD PRIMARY KEY (name, value) USING BTREE;
ALTER TABLE semaphore ADD UNIQUE name (name) USING BTREE;
ALTER TABLE semaphore DROP INDEX value;
ALTER TABLE semaphore ADD INDEX value (value) USING BTREE;
ALTER TABLE semaphore DROP INDEX expire;
ALTER TABLE semaphore ADD INDEX expire (expire) USING BTREE;

我希望这能帮上忙,对我有用。

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

https://drupal.stackexchange.com/questions/288774

复制
相关文章

相似问题

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