TT-RSS用PostgreSQL運用メモ
ナビゲーションに移動
検索に移動
Tiny Tiny RSS(TT-RSS)用PostgreSQLの運用方法について記載する。
方針
サイズが比較的大きく、かつ更新・削除がそれなりに発生するテーブルについては、自動VACUUMの発生間隔を縮める。 HOTが効き、削除量が少ないテーブルについては、1日1回はVACUUMされるよう、削除行数のみで自動VACUUMの発生間隔を規定する。 また、特に更新が多いテーブルは、更新用空き領域を確保する(fillfactorを設定する)。 フィードエントリの更新や削除により、テーブルやインデックスが断片化すると思われるテーブルは、定期的にCLUSTERする。
フィードの内容が登録されるttrss_entries
テーブルには、pg_bigmインデックスを張っており、その不要エントリや待機リストが整理されるようにする。
テーブル設定
テーブル設定(ALTER TABLE)により、自動VACUUMとfillfactorの設定をする。 また、CLUSTER対象のテーブルには、CLUSTERキーも設定する。
自動VACUUM、fillfactor設定
- 設定内容
- 自動VACUUM発生間隔: 1日の削除行数程度
- fillfactor: 80%まで詰める(20%の更新用空き領域)
- 対象テーブル
- ttrss_entries
- ttrss_user_entries
- 設定内容
- 自動VACUUM発生間隔: 10%の不要行発生ごと
- fillfactor: 80%まで詰める(20%の更新用空き領域)
- 対象テーブル
- ttrss_feeds
- ttrss_counters_cache
自動VACUUM設定
- 設定内容
- 自動VACUUM発生間隔: 10%の不要行発生ごと
- 対象テーブル
- ttrss_feedbrowser_cache
CLUSTER設定
- ttrss_entries
- ttrss_entries_updated_idx
- フィードエントリ自体の更新日付(TT-RSS側の更新ではない)
- ttrss_user_entries
- ttrss_user_entries_ref_id_index
- 関連する
ttrss_entries
のID(概ね、TT-RSSの登録順≒フィードエントリ自体の更新順)
ttrss_feedsテーブルサイズが小さく(3ページ)、更新過多ですぐにCLUSTER性が崩れるため、CLUSTER対象外とする。ttrss_feeds_pkeyフィードID(≒フィードの登録順)
ttrss_counters_cacheテーブルサイズが小さい(1ページ)ため、CLUSTER対象外とする。ttrss_counters_cache_feed_id_idx関連するttrss_feeds
のID
以上の設定を行うスクリプトをttrss-ddladd.sqlに添付する。
定時運転
CLUSTERは、月次で行う。
手動VACUUMは、日次で行う。 日次メンテナンスは廃止。
それぞれの実行スクリプトを以下に添付する。