work_mem と一時ファイルの使い方

並べ替えがディスクにあふれていないか

書き方

EXPLAIN (ANALYZE) SELECT … ORDER BY …;
SELECT temp_files, temp_bytes FROM pg_stat_database WHERE datname = 'quest';
ALTER SYSTEM SET log_temp_files = 0;
\! free -h

並べ替えやハッシュは work_mem までメモリを使い、超えると一時ファイルに書きます(Sort Method: external merge Disk: …)。pg_stat_database の temp_files・temp_bytes で数を、log_temp_files でログを確かめます。work_mem は 1 つの並べ替えごとに使うので、大きくしすぎると接続が多いときにメモリが足りなくなります。free でサーバーのメモリを見ます。

例

SET work_mem = '64MB';
ALTER ROLE report SET work_mem = '64MB';

実際に打って練習する

PostgreSQL DBA コースの Lv50「メモリの設定」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る