5
在PostgreSQL中非常慢的DELETE,解决方法?
我在PostgreSQL 9.2上有一个数据库,该数据库的主结构包含约70个表,并且每个客户机模式的结构相同的变量数量各不相同,每个表有30个表。客户端模式具有引用主模式的外键,而不是相反的方式。 我刚刚开始使用从先前版本中获取的一些真实数据填充数据库。当我不得不在主模式的非常中央的表中进行批量删除时,数据库已达到约1.5 GB(预计数周之内将增长到几十GB)。所有相关的外键都标记为ON DELETE CASCADE。 这将花费很长时间也就不足为奇了,但是在12个小时之后,很明显,我最好从头开始,删除数据库并再次启动迁移。但是,如果我需要在数据库正常运行并且更大时再重复此操作,该怎么办?是否有其他更快的方法? 如果我编写了一个脚本,该脚本将浏览从属表,从中央表最远的表开始,逐表删除从属行,会更快吗? 一个重要的细节是某些表上有触发器。