Database PostgreSQL导入失败仍然占用硬盘空间?需要清除缓存吗?
目前我有一个PostgreSQL(OSX上的10.0)数据库,只有一个表。当我在那个表中导入csv文件时,我注意到了一些奇怪的事情 当导入因各种原因(例如csv文件中的一个额外行或给定行的一列中的字符太多)而失败时,不会向表中添加任何行,但PostgreSQL仍会占用硬盘上的空间 现在,我有一个非常大的csv导入,它失败了好几次,因为csv不符合开始-所以我有吨导入失败,我修复,并试图再次导入。我现在意识到,我的计算机存储空间因此减少了30-50GB左右,而我的数据库仍然是空的Database PostgreSQL导入失败仍然占用硬盘空间?需要清除缓存吗?,database,postgresql,csv,caching,storage,Database,Postgresql,Csv,Caching,Storage,目前我有一个PostgreSQL(OSX上的10.0)数据库,只有一个表。当我在那个表中导入csv文件时,我注意到了一些奇怪的事情 当导入因各种原因(例如csv文件中的一个额外行或给定行的一列中的字符太多)而失败时,不会向表中添加任何行,但PostgreSQL仍会占用硬盘上的空间 现在,我有一个非常大的csv导入,它失败了好几次,因为csv不符合开始-所以我有吨导入失败,我修复,并试图再次导入。我现在意识到,我的计算机存储空间因此减少了30-50GB左右,而我的数据库仍然是空的 这正常吗 我怀
- 这正常吗
- 我怀疑这在我的数据库缓存中的某个地方。有没有办法清除缓存,或者必须完全重新安装数据库
谢谢 将行插入数据库将增加表的大小 即使
COPY
语句失败,到目前为止插入的行仍保留在表中,但它们是死行,因为插入它们的事务失败了
在PostgreSQL中,SQL语句VACUUM
将释放该空间。这通常不会缩小表,但会为将来的插入提供空间
通常,这是由autovacuum后台程序在后台自动完成的
有几种可能性:
- 您禁用了自动真空
- Autovacuum清理工作台的速度不够快,因此下一次装载时无法重新使用空间
- 在工作台上运行
,手动删除死行VACUUM(VERBOSE)
- 如果要减小工作台的尺寸,请在工作台上运行
。这将在操作期间锁定表VACUUM(FULL)