我即将从数据库中删除大量数据。我想知道从 MySQL 或 PostgreSQL 的表中删除大量记录是否会锁定表?
假设我的表自 2016 年以来每天添加 2 GB 数据,并且我想删除从现在起超过 6 个月的所有记录。
在删除期间,我的表会被锁定并且所有插入、更新或删除查询都会失败吗?
小智 7
我不了解 MySQL,但 Postgres 在运行 DML 语句时从不锁定整个表 - 无论受影响的行数有多少。
此外,写入器永远不会阻止读取器,因此即使您更新表中的所有行,其他事务仍然能够从该表中进行 SELECT - 显然会看到旧值,直到提交 DML 语句。
从表中删除行也不会阻止并发插入(只要不存在主键冲突)。并且插入行不会阻止删除现有行。
再次强调:上述情况对于 Postgres 来说也是正确的。我不使用MySQL,所以我无法对此发表评论。