mysql - 删除对索引列有约束的行(非唯一)mySQL InnoDB
问题描述
我对数据库不是很有经验,也不想搞砸。如果得到一些帮助会很棒。
运行 mySQL 5.7 (InnoDB)
感兴趣的指数:
- column_1 -> 唯一索引(主索引)
- column_2 -> 非唯一索引
- column_3 -> 非唯一索引
Want to delete all rows with column_2 value 'randomString'
Command:
delete from mydb.myTable
where column_2 = 'randomString'
- column_2 =
randomString
= 2k的行数 - 表中的总行数 = 400K
有一个系统System2
不断地从这个数据库中读取,寻找column_3
有价值的行readValue
column_2
=randomString
和column_3
=readValue
= 1.8K的行数
问题
上面提到的删除语句将锁定哪些行?它只有行randomString
吗?在这种情况下,它是否还会阻止连接尝试 select * with constraint on column_3 直到 lockwait timeout ?
或者
在不阻塞的情况下安全删除 column_2 为 randomString 的行的最佳方法是什么System2
?
解决方案
该删除将锁定所有 2K 行,直到完成,这可能是一个明显的时间长度。
以下是一些关于如何在影响较小的情况下进行大删除的提示。(你没有提供足够的细节让我指出一个具体的建议。) http://mysql.rjweb.org/doc.php/deletebig
推荐阅读
- python - 如何在 Python 中使用 Pandas 有效地将数据框重组为日期时间条目?
- c# - 如何从功能类似于 VB6 COM DLL 的 C# 类库创建 COM DLL?
- mongodb - Docker-compose 和 mongoDB:在任何兼容版本下都无法启动 WiredTiger?
- assembly - x86-64 中的数组
- javascript - 平面对象数组,将所有属性的值提取到单个数组对象中
- python - 如何使用自定义字母将 Base10 数字转换为 Base64 数字?
- qliksense - 设置维度分析 - Qlik Sense
- scala - 关于使用 Scala 创建 jar 文件时出现 org.apache.spark.sql.AnalysisException 错误
- swift - 在 iOS 上从本地领域数据库中删除多个对象
- syntax - Oracle BI Publisher 程序调用