Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 正确的Postgres维护顺序_Database_Postgresql_Indexing_Maintenance_Vacuum - Fatal编程技术网

Database 正确的Postgres维护顺序

Database 正确的Postgres维护顺序,database,postgresql,indexing,maintenance,vacuum,Database,Postgresql,Indexing,Maintenance,Vacuum,我有一个很大的表,它的索引膨胀,因为很多行经常被更新。我还在删除大量行的过程中 为了恢复磁盘空间,执行以下任务的正确顺序是什么 真空,将死元组标记为可供数据库重用的自由元组,不会返回 空间到系统 真空满,重写表格减少表格膨胀, 将空间返回给系统 重新索引,重写索引,减少索引 膨胀,将空间返回到系统 因为PostgreSQL 9.0 a真空满应该以最佳方式返回磁盘空间(就像这样)。我引用当前手册中9.0的发行说明: 新的全真空执行。此命令现在重写 整个表和索引,而不是将单个行移动到 紧凑的空间。

我有一个很大的表,它的索引膨胀,因为很多行经常被更新。我还在删除大量行的过程中

为了恢复磁盘空间,执行以下任务的正确顺序是什么

  • 真空,将死元组标记为可供数据库重用的自由元组,不会返回 空间到系统
  • 真空满,重写表格减少表格膨胀, 将空间返回给系统
  • 重新索引,重写索引,减少索引 膨胀,将空间返回到系统

因为PostgreSQL 9.0 a
真空满
应该以最佳方式返回磁盘空间(就像这样)。我引用当前手册中9.0的发行说明:

新的全真空执行。此命令现在重写 整个表和索引,而不是将单个行移动到 紧凑的空间。在大多数情况下,它的速度要快得多,而且不再是 导致指数膨胀


请注意,正常情况下不需要或甚至不建议运行
真空满负荷运行
。如果从数据页中删除所有热更新等的回旋空间,可能会减慢更新速度。

是的,我知道VACUUM FULL已被重写,但我不知道的是索引也被重写。不过,我的问题仍然存在,在上述情况下,最好的操作和执行顺序是什么?@Gothmog:为了恢复磁盘空间,只是:
VACUUM-FULL
CLUSTER
。不需要别的了。我将
进行真空全分析
,以获取当前统计数据。无需重新编制索引。通常,如果不是为了恢复磁盘空间,也不是仅仅删除表中的大部分,那么应该使用
VACUUM ANALYZE