相关疑难解决方法(0)

PostgreSQL 中的 DELETE 非常慢,解决方法?

我在 PostgreSQL 9.2 上有一个数据库,它有一个包含大约 70 个表的主模式和可变数量的相同结构的每个客户端模式,每个模式有 30 个表。客户端模式具有引用主模式的外键,而不是相反。

我刚刚开始用一些从以前版本中获取的真实数据填充数据库。当我不得不在主模式的一个非常中心的表中进行批量删除时,数据库已经达到大约 1.5 GB(预计在几周内会增长到几十 GB)。所有相关的外键都标记为 ON DELETE CASCADE。

这将需要很长时间,这并不奇怪,但 12 小时后很明显,我最好重新开始,删除数据库并再次启动迁移。但是,如果我稍后需要在数据库处于活动状态且更大时重复此操作怎么办?有没有替代的、更快的方法?

如果我编写一个脚本来浏览依赖表,从离中心表最远的表开始,逐表删除依赖行,会快得多吗?

一个重要的细节是某些表上有触发器。

postgresql performance delete postgresql-9.2

58
推荐指数
4
解决办法
8万
查看次数

标签 统计

delete ×1

performance ×1

postgresql ×1

postgresql-9.2 ×1