gpt4 book ai didi

mysql - MySQL RENAME 和 CREATE TABLE 语句冲突的问题

转载 作者:行者123 更新时间:2023-11-30 23:40:20 24 4
gpt4 key购买 nike

我遇到一个问题,RENAME 语句与 CREATE TABLE 语句冲突导致死锁。

我有一个 CREATE TABLE 语句的形式

CREATE TABLE `ProductTitles`
(
PRIMARY KEY (`ProductId`),
INDEX ( `Title`, `ProductScore` )
)
SELECT p.ProductId, p.Title, ps.ProductScore
FROM Products p
JOIN ProductScores ps USING (ProductId)

由于表格的大小,这可能需要大约 30 分钟才能完成。

当另一个进程试图使用以下形式的 RENAME 语句替换 Products 表时,此语句正在运行时会出现问题:

RENAME TABLE
Products TO ProductsOld,
ProductsNew TO Products

此重命名语句然后锁定 Products 表以进行读写,直到 CREATE TABLE 语句完成。

我的问题是如何避免这种情况?

是否可以使用锁,或者查询是否存在 CREATE TABLE 语句,以避免在 CREATE 语句完成之前运行 RENAME 语句?

据我所知,无论是使用 MyISAM 还是 InnoDb,都会发生这种情况。必须有某种机制来防止这种情况发生。

最佳答案

如果您使用 myisam count() 非常快,您可以在尝试重命名之前将 Products 的大小与 ProductTitles 进行比较

关于mysql - MySQL RENAME 和 CREATE TABLE 语句冲突的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863465/

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