設定ファイル@PostgreSQL¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. セットアップ¶
インストール¶
▼ dnfリポジトリから¶
psql
コマンドのみをインストールしたい場合
$ dnf install -y postgresql
動作確認¶
▼ ステータス確認¶
PostgreSQLのプロセスが稼働していることを確認する。
$ systemctl status postgresql-13.service
▼ コネクション確認¶
DBに接続する。
# psql -U foo-user -h *.*.*.* -p 5432 -d foo-db
$ psql -U <ユーザー名> -h <DBホスト名> -p <ポート番号> -d <DB名>
パスワードをpsql
コマンドに渡す場合、環境変数か.pgpass
ファイルで定義する。
<IPアドレス>:<ポート番号>:<DB名>:<ユーザ名>:<パスワード>
$ export PGPASSWORD=<パスワード>
▼ オートバキュームの手動実行¶
# 全てのテーブルを指定する
$ vacuum
# 特定のテーブルを指定する
$ vacuum <テーブル名>
02. セクション¶
autovacuum¶
オートバキュームを有効化する
autovacuum = on
▼ オートバキュームとは¶
PostgreSQLは、オートバキュームによってDB上の残骸タプルを自動的に削除する。
デッドタプル率 (DBのストレージ全体量に対するタプル量) がn
%以上になると、PostgreSQLはオートバキュームを実行するように設定できる。
オートバキュームではDBで削除処理が実行されるため、ハードウェアリソースの消費量が高まってしまう。
今回のオートバキュームと次回のそれの間で実行できるトランザクションは20
億回と決まっているため、ある程度の間隔でオートバキュームを実行する必要がある。
▼ タプルと残骸タプル¶
テーブルのレコード (行) のこと。
PostgreSQLでレコードをUPDATE/DELETEすると、操作前のレコードは削除されずに残骸となる。
これを削除するために、オートバキュームが必要である。
log_directory¶
▼ log_directoryとは¶
実行ログの出力先のディレクトリを設定する。
log_directory = /var/lib/pgsql
▼ ログローテーション¶
ログローテーションによって、ログファイルを分割して保管しておく。
log_directory
オプションで設定したディレクトリ配下で、PostgreSQLは、ログローテーションされたログファイルを配置する。
$ ls -la /var/lib/pgsql
drwx------. 2 postgres postgres 4096 7月 4 2022 .
drwx------. 20 postgres postgres 4096 1月 07 00:00 ..
-rw-------. 1 postgres postgres 155406014 1月 01 00:00 postgresql-Sun.log
-rw-------. 1 postgres postgres 171692688 1月 02 00:00 postgresql-Mon.log
-rw-------. 1 postgres postgres 145817641 1月 03 00:00 postgresql-Tue.log
-rw-------. 1 postgres postgres 145711063 1月 04 00:00 postgresql-Wed.log
-rw-------. 1 postgres postgres 184520145 1月 05 00:00 postgresql-Thu.log
-rw-------. 1 postgres postgres 150962818 1月 06 00:00 postgresql-Fri.log
-rw-------. 1 postgres postgres 120718679 1月 07 00:00 postgresql-Sat.log
▼ クエリの確認¶
実行ログから、クエリを確認できる。
$ cat /var/lib/postgresql-Sun.log | grep -E "^2023-01-01 12:00" | grep "statement: SELECT"
$ cat /var/lib/postgresql-Sun.log | grep -E "^2023-01-01 12:00" | grep "statement: INSERT"
log_line_prefix¶
▼ log_line_prefixとは¶
ログのプレフィクスの形式を設定する。
log_line_prefix = '%m [%p]: user=%u,db=%d,app=%a,client=%r,xid=%x '
log_min_duration_statement¶
スロークエリログを出力する場合に、スロークエリと見なす閾値秒数を設定する。
log_min_duration_statement = 100ms
logging_collector¶
標準エラー出力などに出力されるログを、ログファイルに出力する。
logging_collector = on