PostgreSQL

Ellie Huxtable

PostgreSQL

Postgresのスニペット集です。よく忘れてしまうことをまとめたリファレンス用ページです。

  • pg_ctl init -D path - pathに新しいデータベースと設定を初期化します
  • pg_hba.conf - ホストベース認証を設定します
  • pg_ident.conf - システムユーザーをデータベースユーザーにマッピングします
  • postgresql.conf - その他の設定変更全般

学んだこと

  • インデックスなしでテーブルを作成し、データをコピーしてからインデックスを追加する方が高速です
  • SSD上のデータベースではrandom_page_cost=1.1を使用するとパフォーマンスが大幅に向上します

スニペット

コマンド

  • \l データベースを一覧表示します
  • \c dbname 現在のユーザーとしてデータベースに接続します

別のテーブルをコピーしてテーブルを作成する

create table new_table as table old_table;

注意: これによりすべてのデータがコピーされますが、インデックスや制約はコピーされません

データなしで作成する場合

create table new_table as table old_table with no data;

クエリや絞り込みを行う場合:

create table new_table as (select * from old_table where some_condition);

待機中のロックを確認する

select relation::regclass, * from pg_locks where not granted;

データベースのサイズを取得する

SELECT pg_size_pretty(pg_database_size('database name'));

テーブルのサイズを取得する

SELECT pg_size_pretty(pg_relation_size('records'));

レプリケーションスロットの監視

SELECT * FROM pg_replication_slots;

レプリケーションラグの監視

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS replica_lag

データベースのスキーマのみをダンプする

pg_dump --schema-only databasename

便利なツール

原文は Ellie Huxtable により に公開されました。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。