gpt4 book ai didi

mysql - 如何改进 INSERT INTO ... SELECT 锁定行为

转载 作者:IT老高 更新时间:2023-10-28 12:59:35 31 4
gpt4 key购买 nike

在我们的生产数据库中,我们每小时运行以下伪代码 SQL 批处理查询:

INSERT INTO TemporaryTable
(SELECT FROM HighlyContentiousTableInInnoDb
WHERE allKindsOfComplexConditions are true)

现在这个查询本身不需要很快,但我注意到它锁定了 HighlyContentiousTableInInnoDb,即使它只是从中读取。这使得其他一些非常简单的查询需要大约 25 秒(这是其他查询需要多长时间)。

然后我发现在这种情况下 InnoDB 表实际上是被 SELECT 锁定的! https://www.percona.com/blog/2006/07/12/insert-into-select-performance-with-innodb-tables/

但我不太喜欢文章中选择进入 OUTFILE 的解决方案,这似乎是一种 hack(文件系统上的临时文件看起来很糟糕)。还有其他想法吗?有没有办法制作 InnoDB 表的完整副本,而不会在复制过程中以这种方式锁定它。然后我可以将 HighlyContentiousTable 复制到另一个表并在那里进行查询。

最佳答案

这个问题的答案现在容易多了:- 使用基于行的复制和已提交读隔离级别。

您遇到的锁定消失了。

更长的解释:http://harrison-fisk.blogspot.com/2009/02/my-favorite-new-feature-of-mysql-51.html

关于mysql - 如何改进 INSERT INTO ... SELECT 锁定行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640898/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com