-
PostgreSQLのMVCCとガベージコレクション(Vacuum)
このエントリはPostgreSQL Advent Calender 2021の22日目の記事です。
-
PostgreSQL 14でのBtreeインデックスのVacuum関連の改善についての解説
Vacuum(とautovacuum)は、テーブルとインデックスのゴミ掃除をした後にindex cleanupと呼ばれる「インデックスVacuumの後処理」のようなものを実行します。実際の処理内容はインデックスの種類によって異なりますが、index cleanupの主な目的はインデックスの統計情報(ページ数、タプル数)を取得することです(インデックスによっては、削除済みページの回収など、他の処理を行う場合もあります)。インデックスのゴミ掃除をした場合(つまりテーブルにゴミがある状態でVacuumが実行された場合)は、インデックスの統計情報はすでに取得済みなので、index cleanupでは何もしません。一方、テーブルにゴミがない状態でVacuumが実行された場合1は、index cleanupはVacuumにとってこれが初めてのインデックスに対する処理となります。
-
INSERTのみが走ったテーブル(ゴミが内テーブル)にはautovacuumは実行されなかった(PG11時点)。けど、XID周回防止Vacuumはゴミがないテーブルにも定期的に走る。 ↩
-
-
MyProc->delayChkptについての理解と覚書
PostgreSQLのコードを読んでいるとたまに
MyProc->delayChkpt
と一旦true
にして、いくつか処理をしたあとに再びfalse
に戻す、という処理を見ることがあります。 -
今年はPostgreSQL開発に参画してみたいという人のためにレビューしやすいパッチを選びました
昨年9月にPostgreSQL 13がリリースされましたが、PostgreSQL開発コミュニティでは現在PostgreSQL 14の開発を行っています。PostgreSQLの開発はCommitfestと呼ばれるWebページにパッチを登録し、みんなで1ヶ月間レビューする、という形で行われます。PostgreSQL 14に向けたCommitfestはすでに3回行われていて、2021年1月1日から第4回が始まりました(3月から始まる第5回が最後)。
-
シーケンシャル・スキャンだからといってデータがテーブルの先頭から返ってくるとは限らない、という話
この記事はPostgreSQL Advent Calendar 2020の23日目の記事です。昨日は、@hiro5963さんによる「pg_repackについて調べてみた」でした。