ユーザ用ツール

サイト用ツール


it技術:データベース:postgresql:運用

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
it技術:データベース:postgresql:運用 [2022/02/21 16:59] – [AUTOVACUUM(自動実行)] yajuadminit技術:データベース:postgresql:運用 [2024/04/24 11:07] (現在) – [shared_buffers] yajuadmin
行 27: 行 27:
 ※Windowsシステムでの有効なshared_buffersの範囲は一般的に64MBから512MBです。Windows版は64MBあれば十分のようなのでデフォルトのまま。\\ ※Windowsシステムでの有効なshared_buffersの範囲は一般的に64MBから512MBです。Windows版は64MBあれば十分のようなのでデフォルトのまま。\\
 https://www.postgresql.jp/document/9.6/html/runtime-config-resource.html https://www.postgresql.jp/document/9.6/html/runtime-config-resource.html
 +
 +<wrap em>PostgreSQL 10以降のマニュアル(shared_buffers欄)には、「Windowsシステムでの有効なshared_buffersの範囲は一般的に64MBから512MBです。」の記載が消えている。https://github.com/le0pard/pgtune/discussions/50</wrap>
  
 既定値:128MB 既定値:128MB
行 151: 行 153:
 </code> </code>
  
-  * [[https://blogs.yahoo.co.jp/yukigaku0313/21115869.html|PostgreSQL インストールのトラブルシューティング]]+  * [[https://web.archive.org/web/20180912063813/https://blogs.yahoo.co.jp/yukigaku0313/21115869.html|PostgreSQL インストールのトラブルシューティング]]
   * [[http://software.fujitsu.com/jp/manual/manualfiles/m130025/b1ws1136/01z200/b1136-00-04-03-02.html|4.3 インスタンスの作成 > 4.3.2 initdbコマンドを使用する場合]]   * [[http://software.fujitsu.com/jp/manual/manualfiles/m130025/b1ws1136/01z200/b1136-00-04-03-02.html|4.3 インスタンスの作成 > 4.3.2 initdbコマンドを使用する場合]]
  
行 501: 行 503:
   * Dead Tupleが各テーブルで定められた閾値を超えた場合(autovacuum_vacuum_threshold)   * Dead Tupleが各テーブルで定められた閾値を超えた場合(autovacuum_vacuum_threshold)
  
-統計情報の再計算\\+**統計情報の再計算**\\
 以下の計算式以上のレコードが更新(UPDATE/DELETE)されたテーブルは自動的に実行 以下の計算式以上のレコードが更新(UPDATE/DELETE)されたテーブルは自動的に実行
 +autovacuum_vacuum_thresholdがデフォルト 50で、autovacuum_vacuum_scale_factorがデフォルト 0.1となっている。
 +
 <code> <code>
 autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * レコード数 autovacuum_vacuum_threshold + autovacuum_vacuum_scale_factor * レコード数
行 509: 行 513:
 AUTOVACUUMデーモン(Windowsサービス)が一定間隔でこれらの状況を監視し、ロック競合が発生しない限り、一定数量のAUTOVACUUM処理が実行される。 AUTOVACUUMデーモン(Windowsサービス)が一定間隔でこれらの状況を監視し、ロック競合が発生しない限り、一定数量のAUTOVACUUM処理が実行される。
  
-パラメータはテーブル単位でも決定可能 \\ 大規模テーブルではテーブル単位に autovacuum_vacuum_scale_factor を 0 に \\ autovacuum_vacuum_threshold を適切な値に変更し、頻繁に VACUUM を実行することを推奨\\+パラメータはテーブル単位でも決定可能\\ 
 +大規模テーブルではテーブル単位に autovacuum_vacuum_scale_factor を 0 に\\ 
 +autovacuum_vacuum_threshold を適切な値に変更し、頻繁に VACUUM を実行することを推奨\\
 [[https://web.archive.org/web/20190531052308/https://tihiro.hatenablog.com/entry/2018/07/17/223913|テーブルごとにAUTO_VACUUMおよびAUTO_ANALYZEをする閾値を設定する]] [[https://web.archive.org/web/20190531052308/https://tihiro.hatenablog.com/entry/2018/07/17/223913|テーブルごとにAUTO_VACUUMおよびAUTO_ANALYZEをする閾値を設定する]]
  
-例えば、有効行数の10%を廃止行数が超えたら、自動的にVACUUMさせたいって場合+例えば、10000件廃止行数が超えたら、自動的にVACUUMさせたいって場合
  
 <code> <code>
-ALTER TABLE {table_name} SET (autovacuum_vacuum_threshold = 0); +ALTER TABLE {table_name} SET (autovacuum_vacuum_threshold = 10000); 
-ALTER TABLE {table_name} SET (autovacuum_vacuum_scale_factor = 10);+ALTER TABLE {table_name} SET (autovacuum_vacuum_scale_factor = 0);
 </code> </code>
 +
 +<wrap em>巨大なテーブルに対して実行すると、vacuum処理に時間がかかりすぎることによって、表面のアプリケーション側に影響を及ぼすことがあるので、パラメータ変更はせずに非稼働時間に定期的にVACUME ANALIZEを各テーブルに行うようにしたい。</wrap>
  
 ==== VACUUM実行確認 ==== ==== VACUUM実行確認 ====
行 583: 行 591:
 ===== 統計情報 ====== ===== 統計情報 ======
 [[https://www.ospn.jp/osc2014.enterprise/pdf/OSC2014_Enterprise_hp.pdf|PostgreSQL安定運用のための障害予防と検知 - pdf]] [[https://www.ospn.jp/osc2014.enterprise/pdf/OSC2014_Enterprise_hp.pdf|PostgreSQL安定運用のための障害予防と検知 - pdf]]
 +
 +==== ANALYZE =====
 +ANYLYZEは、統計情報を行う。単独で動かせるし「VACUUM ANYLYZE」としてVACUUMと組み合わせることもできる。AUTOVACUUM時にもANYLYZEが行われている。\\
 +対象とするテーブルの読み取りロックのみ(読み込みはできるが書き込みができない状態)であり、そのテーブルに対する他の操作と並行して実行することができます。
 ==== 統計情報の取得 ===== ==== 統計情報の取得 =====
   * SQL文の実行計画作成には統計情報を使用   * SQL文の実行計画作成には統計情報を使用
it技術/データベース/postgresql/運用.1645430346.txt.gz · 最終更新: 2022/02/21 16:59 by yajuadmin