it技術:データベース:postgresql:運用
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
it技術:データベース:postgresql:運用 [2021/08/02 10:20] – [pg_basebackup] yajuadmin | it技術:データベース:postgresql:運用 [2022/02/21 17:19] – [AUTOVACUUM(自動実行)] yajuadmin | ||
---|---|---|---|
行 273: | 行 273: | ||
</ | </ | ||
- | postgresql.conf の max_wal_sender 設定のデフォルトは 0 です。最低でも 1 以上でないと pg_basebackup コマンドは実行できないので修正します。 | + | postgresql.conf の max_wal_sender 設定のデフォルトは 0 です。最低でも 1 以上でないと pg_basebackup コマンドは実行できないので修正します。※PostgreSQL12ではデフォルトは 10 となった。 |
<code bat postgresql.conf> | <code bat postgresql.conf> | ||
- | max_wal_sender = 1 | + | max_wal_sender = 10 |
</ | </ | ||
行 316: | 行 316: | ||
<code sql> | <code sql> | ||
SELECT pg_switch_xlog(); | SELECT pg_switch_xlog(); | ||
+ | ↓ PostgreSQL10以降ではコマンド名変更 | ||
+ | SELECT pg_switch_wal(); | ||
</ | </ | ||
行 374: | 行 376: | ||
- pg_controlファイルを読み込む | - pg_controlファイルを読み込む | ||
- | - recovery.confを読み込む | + | - recovery.confを読み込む |
- backup_labelを読み込む | - backup_labelを読み込む | ||
- pg_controlファイルを更新し、backup_labelを削除する | - pg_controlファイルを更新し、backup_labelを削除する | ||
行 501: | 行 503: | ||
統計情報の再計算\\ | 統計情報の再計算\\ | ||
以下の計算式以上のレコードが更新(UPDATE/ | 以下の計算式以上のレコードが更新(UPDATE/ | ||
+ | autovacuum_vacuum_thresholdがデフォルト 50で、autovacuum_vacuum_scale_factorがデフォルト 0.1となっている。 | ||
+ | |||
< | < | ||
autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * レコード数 | autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * レコード数 | ||
行 507: | 行 511: | ||
AUTOVACUUMデーモン(Windowsサービス)が一定間隔でこれらの状況を監視し、ロック競合が発生しない限り、一定数量のAUTOVACUUM処理が実行される。 | AUTOVACUUMデーモン(Windowsサービス)が一定間隔でこれらの状況を監視し、ロック競合が発生しない限り、一定数量のAUTOVACUUM処理が実行される。 | ||
- | パラメータはテーブル単位でも決定可能 \\ 大規模テーブルではテーブル単位に autovacuum_vacuum_scale_factor を 0 に \\ autovacuum_vacuum_threshold を適切な値に変更し、頻繁に VACUUM を実行することを推奨\\ | + | パラメータはテーブル単位でも決定可能\\ |
- | [[https:// | + | 大規模テーブルではテーブル単位に autovacuum_vacuum_scale_factor を 0 に\\ |
+ | autovacuum_vacuum_threshold を適切な値に変更し、頻繁に VACUUM を実行することを推奨\\ | ||
+ | [[https:// | ||
+ | |||
+ | 例えば、有効行数の10%を廃止行数が超えたら、自動的にVACUUMさせたいって場合 | ||
+ | |||
+ | < | ||
+ | ALTER TABLE {table_name} SET (autovacuum_vacuum_threshold = 0); | ||
+ | ALTER TABLE {table_name} SET (autovacuum_vacuum_scale_factor = 10); | ||
+ | </ | ||
==== VACUUM実行確認 ==== | ==== VACUUM実行確認 ==== | ||
行 710: | 行 723: | ||
SELECT pg_database_size(' | SELECT pg_database_size(' | ||
</ | </ | ||
+ | |||
+ | === テーブル単位のサイズを取得するSQL === | ||
+ | <code sql> | ||
+ | SELECT pgn.nspname, | ||
+ | ' | ||
+ | ' | ||
+ | FROM 10) = REPLACE(SUBSTRING(pg.relname FROM 10), ' | ||
+ | pg_class pgc WHERE pg.reltoastrelid = pgc.oid) END:: | ||
+ | ' | ||
+ | (SELECT pgt.oid FROM pg_class pgt WHERE SUBSTRING(pgt.relname FROM 10) = REPLACE(SUBSTRING(pg.relname | ||
+ | FROM 10), ' | ||
+ | FROM pg_class pg, pg_namespace pgn WHERE pg.relnamespace = pgn.oid AND pgn.nspname NOT IN | ||
+ | (' | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
=== テーブル単位のダンプ === | === テーブル単位のダンプ === |
it技術/データベース/postgresql/運用.txt · 最終更新: 2024/04/24 11:07 by yajuadmin