首页 > 解决方案 > 删除对索引列有约束的行(非唯一)mySQL InnoDB

问题描述

我对数据库不是很有经验,也不想搞砸。如果得到一些帮助会很棒。

运行 mySQL 5.7 (InnoDB)

感兴趣的指数:

Want to delete all rows with column_2 value 'randomString'

Command:
delete from mydb.myTable
where column_2 = 'randomString'

有一个系统System2不断地从这个数据库中读取,寻找column_3有价值的行readValue

问题

上面提到的删除语句将锁定哪些行?它只有行randomString吗?在这种情况下,它是否还会阻止连接尝试 select * with constraint on column_3 直到 lockwait timeout ?

或者

在不阻塞的情况下安全删除 column_2 为 randomString 的行的最佳方法是什么System2

标签: mysqlinnodb

解决方案


该删除将锁定所有 2K 行,直到完成,这可能是一个明显的时间长度。

以下是一些关于如何在影响较小的情况下进行大删除的提示。(你没有提供足够的细节让我指出一个具体的建议。) http://mysql.rjweb.org/doc.php/deletebig


推荐阅读