web-dev-qa-db-ja.com

Greenplum AOテーブルから削除するのはどれほど悪いですか?

いくつかのAOテーブルがあります(これは、「追加のみ」ではなく、「最適化された追加」を意味します)。通常、これらのテーブルに挿入するだけです。

重要なシステム変更の一環として、これらのテーブルからかなり大きな削除を行う必要があります。これは、データ量の約2%にすぎず、パーティションの範囲が狭い場合に限られます。最終的に、これらのパーティションは保持ポリシーの終了をロールオフします。

AOテーブルで削除を実行した結果に関する情報が見つかりません。

2
PhilHibbs

ヒープテーブルとAOテーブルの主な違いは、可視性データの保存方法です。ヒープテーブルでは、可視性情報は各レコードのヘッダーであり、AOテーブルには個別の可視性マップ構造があります。

AOテーブルでUPDATEまたはDELETE操作が行われると、この可視性マップを処理する必要があります。これにより、マップを読み取って処理するための追加の負荷が非常に小さくなります。処理は単なるセット/非セットチェックであるため、ヒープテーブルでのMVCCの可視性の範囲チェックよりもはるかに軽量です。

ドロップされる行の割合が少ないため、スキャン操作への影響はごくわずかです。 UPDATEまたはDELETE操作が行われたAOテーブルをVACUUMすると、テーブルが圧縮されます。これにより、大量のディスクIOが作成され、かなりのスペースが必要になる場合があります。

2
Bell