MySQL 或 PostgreSQL 在删除时是否锁定表?

Gyp*_*aut 6 mysql postgresql

我即将从数据库中删除大量数据。我想知道从 MySQL 或 PostgreSQL 的表中删除大量记录是否会锁定表?

假设我的表自 2016 年以来每天添加 2 GB 数据,并且我想删除从现在起超过 6 个月的所有记录。

在删除期间,我的表会被锁定并且所有插入、更新或删除查询都会失败吗?

小智 7

我不了解 MySQL,但 Postgres 在运行 DML 语句时从不锁定整个表 - 无论受影响的行数有多少。

此外,写入器永远不会阻止读取器,因此即使您更新表中的所有行,其他事务仍然能够从该表中进行 SELECT - 显然会看到旧值,直到提交 DML 语句。

从表中删除行也不会阻止并发插入(只要不存在主键冲突)。并且插入行不会阻止删除现有行。

再次强调:上述情况对于 Postgres 来说也是正确的。我不使用MySQL,所以我无法对此发表评论。