Greenplum 調優--VACUUM系統表
1、VACUUM系統表原因
Greenplum是基於MVCC版本控制的,所有的delete並沒有刪除數據,而是將這一行數據標記為刪除,
而且update其實就是delete加insert。所以,隨着操作越來越多,表的大小也會越來越大。對於OLAP
應用來說,大部分表都是一次導入后不再修改,所以不會出現這個問題。
但是對於數據字典來說,就會隨着時間表越來越大,其中的數據垃圾越來越多。
2、Greenplum的VACUUM工具
Greenplum的VACUUM工具,可以回收已經刪除行占據的存儲空間。
語法:
vacuum table;
vacuum full table;
1)簡單的vacuum table只是簡單的回收空間且令其可以再次使用。可以緩解表的增長。
這個命令執行的時候,其他操作仍可以對標的讀寫並發操作,沒有請求排他鎖。
2)vacuum full執行更廣泛的處理,包括跨塊移動行,把表壓縮到最少的磁盤塊數目存儲。
這個命令執行的時候,需要加排他鎖。
3)PostgreSQL中,此功能是自動執行。但是Greenplum中大部分的表是不需要vacuum的,
所以vacuum的autovacuum是關閉的。
4)執行vacuum后,最好對表上的索引進行重建