PgQでは、各キューそれぞれに3つのイベント格納用テーブルが用意してあり、それらを順繰りに使うことでバキューム対象となるデッドタプルが増えたテーブルをキュー処理に使わないようにし、ディスクIOを減らしている(らしい)。
tickerって5分に一度メンテナンスをしているが、上記のようなことをやっていたのですね。関数(PostgreSQLのPgQを仕込んだデータベースに格納された関数)が、下記が順に呼ばれています。
・maint_rotate_tables_step1(実際のローテートを行う)
・maint_rotate_tables_step2(その際にTXを付け替える)
・maint_tables_to_vacuum(バキューム対象テーブルをリストする)
ちなみに、ソース的には実際のバキューム処理はskytools-2.1.6/python/pgq/maint.pyに含まれています(あとTXってのはPgQ独自のトランザクションNo?のことだと思います)。
0 件のコメント:
コメントを投稿