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便利なツール
記事をランダムに読む