日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

自動回收空間(Auto Vacuum)

云原生數據倉庫AnalyticDB PostgreSQL版能夠在后臺對表自動進行臟數據回收操作,避免數據持續膨脹導致掃描性能下降以及XID回卷問題,本文介紹Auto Vacuum工作機制及調優參數。

前提條件

云原生數據倉庫AnalyticDB PostgreSQL版實例的版本為2021年05月27日及以上。如何升級小版本,請參見版本升級

工作機制

Auto Vacuum可以自動執行VACUUM或者VACUUM FREEZE命令。Auto Vacuum進程會定期檢查具有大量插入、更新或刪除的表,以及每張表的XID AGE,在需要的時候主動對表執行VACUUM或VACUUM FREEZE操作,回收表中的垃圾數據或者降低XID AGE,提升查詢速度。

觸發公式

臟數據行數 > 表行數 * 觸發比例閾值 + 觸發行數閾值

臟數據在表進行更新刪除時會累計,表行數為該表上次進行分析時得到的行數統計信息,觸發比例閾值受autovacuum_vacuum_scale_factor參數控制,默認為0.5,觸發行數閾值受autovacuum_vacuum_threshold參數控制,默認為10000行。即默認情況下您可以認為:當表中臟數據比例超過一半時,自動臟數據清理會觸發。

鎖沖突

Auto Vacuum會持有表的四級鎖。當Auto Vacuum工作期間,如果業務需要持有的鎖與Auto Vacuum獲取的鎖沖突,Auto Vacuum進程會主動退讓鎖,不影響業務執行。

資源占用

Auto Vacuum在執行時會占用一定CPU和IO資源,但在業務沒有觸及資源瓶頸時不會對性能有影響。

查詢Auto Vacuum進程工作情況

AnalyticDB PostgreSQL 7.0版中,可以通過如下的SQL查看正在工作的Auto Vacuum進程。

SELECT * FROM pg_stat_activity WHERE backend_type = 'autovacuum worker';

AnalyticDB PostgreSQL 6.0版中,可以通過如下的SQL查看正在工作的Auto Vacuum進程。

SELECT * FROM pg_stat_activity WHERE query LIKE 'autovacuum%';

查詢Auto Vacuum執行VACUUM的表

SELECT schemaname, c.relname, c.reltuples, n_dead_tup, last_autovacuum, (n_dead_tup::float / c.reltuples::float) 
AS bloat_ratio FROM pg_stat_all_tables s, pg_class c 
WHERE c.oid = s.relid AND c.reltuples > 10000  AND (n_dead_tup::float >  10000 + c.reltuples::float * 0.5) 
ORDER BY (n_dead_tup::float/ c.reltuples::float) DESC;

參數說明:

  • 0.5:實例autovacuum_vacuum_scale_factor的參數值。

  • 10000:實例autovacuum_vacuum_threshold的參數值。

參數設置

實例級別參數

如下所示為支持調整的實例級別參數。

參數名稱

參數含義

默認值

autovacuum_naptime

auto vacuum進程調度周期,單位為秒。

60

autovacuum_vacuum_scale_factor

auto vacuum觸發的比例閾值。若您希望回收臟數據的頻率更高,可以通過調低比例閾值實現。

0.5

autovacuum_vacuum_threshold

auto vacuum觸發的行數閾值。

10000

autovacuum_freeze_max_age

auto vacuum觸發VACUUM FREEZE的XID AGE閾值。

200,000,000

autovacuum_max_execute_workers

auto vacuum允許執行的并行數。

max(3, cpucores/2),

cpucores為單計算節點CPU核數。

重要

一般不建議調整實例級別的Auto Vacuum參數,如果想要調整某個參數閾值,可以提交工單聯系工程師調整。

表級別參數

調整Auto Vacuum參數

您可以只針對某張表調整Auto Vacuum參數,語法如下。

ALTER TABLE <test_table> SET (<autovaccum_options>=<expect_value>);

參數說明:

  • <test_table>:需要調整的表名。

  • <autovaccum_options>:可以調整的Auto Vacuum表級別參數。

  • <expect_value>:想要調整的值。

使用示例

示例一:關閉表test的Auto Vacuum。

ALTER TABLE test SET (autovacuum_enabled=false);
重要

autovacuum_enabled=false會關閉表的Auto Analyze能力,建議通過調高觸發比例關閉Auto Vacuum。

示例二:調高表test Auto Vacuum的觸發比例到80%。

ALTER TABLE test SET (autovacuum_vacuum_scale_factor=0.8);

還原Auto Vacuum參數

您也可以還原某張表的Auto Vacuum參數為實例默認值,語法如下。

ALTER TABLE <test_table> RESET (<autovaccum_options>);

使用示例

示例一:還原表test Auto Vacuum的觸發比例為默認值。

ALTER TABLE test RESET (autovacuum_vacuum_scale_factor);

支持調整的表級別參數

參數名稱

參數含義

autovacuum_vacuum_scale_factor

auto vacuum觸發的比例閾值。

autovacuum_vacuum_threshold

auto vacuum觸發的行數閾值。