it技術:データベース:postgresql
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| it技術:データベース:postgresql [2024/02/23 21:11] – [バージョン] yajuadmin | it技術:データベース:postgresql [2025/10/16 11:15] (現在) – [複合インデックス] yajuadmin | ||
|---|---|---|---|
| 行 9: | 行 9: | ||
| - | 将来的には追記型アーキテクチャを捨てて、EnterpriseDBが率先して開発している「zHeap」の実装して他のデータベースのようにUNDOログをもつようにしたい。\\ | + | 将来的には追記型アーキテクチャを捨てて、EnterpriseDBが率先して開発している「zHeap」の実装して他のデータベースのようにUNDOログをもつようにしたい。→ その後zHeapのメイン開発者が抜けて休止状態\\ |
| [[https:// | [[https:// | ||
| ===== 接続ドライバー ===== | ===== 接続ドライバー ===== | ||
| 行 58: | 行 58: | ||
| |15.0|2022/ | |15.0|2022/ | ||
| |16.0|2023/ | |16.0|2023/ | ||
| + | |17.0|2024/ | ||
| + | |18.0|2025/ | ||
| ==== サポート終了期限(EOL=End Of Life) ==== | ==== サポート終了期限(EOL=End Of Life) ==== | ||
| https:// | https:// | ||
| ^バージョン^初期リリース日^サポート終了期限^ | ^バージョン^初期リリース日^サポート終了期限^ | ||
| + | |18|2025年09月25日|2030年11月7日| | ||
| + | |17|2024年09月26日|2029年11月8日| | ||
| + | |16|2023年09月14日|2028年11月9日| | ||
| |15|2022年10月13日|2027年11月11日| | |15|2022年10月13日|2027年11月11日| | ||
| |14|2021年09月30日|2026年11月12日| | |14|2021年09月30日|2026年11月12日| | ||
| 行 221: | 行 226: | ||
| * バージョン非互換対応(新機能ではないけど) | * バージョン非互換対応(新機能ではないけど) | ||
| * PublicスキーマのCreate権限がデフォルトからなくなる | * PublicスキーマのCreate権限がデフォルトからなくなる | ||
| + | |||
| + | ==== PostgreSQL16情報 ==== | ||
| + | 2023-09-14にリリース | ||
| + | |||
| + | === 主な新機能 === | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | * 性能向上 | ||
| + | * パラレルクエリ対応追加 | ||
| + | * ウィンドウ関数の最適化 | ||
| + | * 同時データ投入の性能向上 | ||
| + | * SIMD CPUアクセラレータ対応 | ||
| + | * SQL機能 | ||
| + | * SQL/JSON 対応 | ||
| + | * 整数リテラル表現の追加 | ||
| + | * ICU照合順序の拡張 | ||
| + | * ロジカルレプリケーション機能追加 | ||
| + | * スタンバイ上でのパブリケーション | ||
| + | * トランザクションの並列適用 | ||
| + | * 双方向ロジカルレプリケーション | ||
| + | * クライアント機能 | ||
| + | * libpqロードバランス | ||
| + | * psqlで拡張プロトコル対応 | ||
| + | * pg_dump圧縮オプション追加 | ||
| + | * 運用管理 | ||
| + | * 新たなモニタリング項目 | ||
| + | * 新たな定義済みロール | ||
| + | * ページ凍結の改善 | ||
| + | * VACUUMリングバッファ指定 | ||
| + | * Mesonビルド | ||
| + | |||
| + | ==== PostgreSQL17情報 ==== | ||
| + | 2024-09-26にリリース | ||
| + | |||
| + | === 主な新機能 === | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | * 性能向上 | ||
| + | * VACUUM性能改善 | ||
| + | * COPY性能向上 | ||
| + | * ストリームI/ | ||
| + | * 各種プランナ改善 | ||
| + | * SQL機能 | ||
| + | * SQL/ | ||
| + | * MERGE文の拡張 | ||
| + | * COPY FROM に ON_ERROR オプション追加 | ||
| + | * ロジカルレプリケーション機能追加 | ||
| + | * pg_upgrade 対応の改善 | ||
| + | * フェイルオーバに対応 | ||
| + | * pg_createsubscriberコマンド追加 | ||
| + | * パーティショニング機能 | ||
| + | * 排他制約に対応 | ||
| + | * IDENTITY列に対応 | ||
| + | * 運用管理 | ||
| + | * インクリメンタルバックアップ | ||
| + | * 新たな定義済みロール | ||
| + | * 新たなモニタリングビュー | ||
| + | * pg_dump の –filterオプション | ||
| + | |||
| + | ==== PostgreSQL18情報 ==== | ||
| + | 2025-09-25にリリース | ||
| + | |||
| + | === 主な新機能 === | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | * 性能向上 | ||
| + | * 非同期I/ | ||
| + | * Btreeインデックスのスキップスキャン | ||
| + | * プランナ改善(WHERE句内にOR条件がある場合の最適化、ほか) | ||
| + | * GINインデックスの並列作成 | ||
| + | * 大量のテーブルアクセス時のロック処理の改善 | ||
| + | * 組み込み照合順序pg_unicode_fast | ||
| + | * メジャーバージョンアップ | ||
| + | * プランナ統計情報の移行 | ||
| + | * チェック処理の並列化オプションの追加 | ||
| + | * --swapオプションの追加 | ||
| + | * SQL機能 | ||
| + | * 仮想生成列の追加 | ||
| + | * 更新系DMLのRETURNING句へOLD, | ||
| + | * UUID v7関数の追加 | ||
| + | * 非決定論的な照合順序利用時のLIKE句のサポート | ||
| + | * CASEFOLD関数の追加 | ||
| + | * 各種制約の追加(WITHOUT OVERLAPS、ほか) | ||
| + | * ラージオブジェクトに対するデフォルト権限設定のサポート | ||
| + | * セキュリティ機能 | ||
| + | * TLS v1.3 暗号スイートの追加 | ||
| + | * postgres_fdw、dblinkへのSCRAM認証のパススルーオプションの追加 | ||
| + | * 運用管理 | ||
| + | * プランナ統計情報のダンプ/リストア | ||
| + | * EXPLAIN文の強化 | ||
| + | * pg_stat_all_tablesへのVACUUM、ANALYZE総実行時間の追加 | ||
| + | * 接続単位でのI/ | ||
| + | * 論理レプリケーション時の書き込み衝突の情報詳細化 | ||
| ===== 設定について ===== | ===== 設定について ===== | ||
| postgresql.confの設定値は、下記SQLで context の値により設定反映のタイミングが違う。 | postgresql.confの設定値は、下記SQLで context の値により設定反映のタイミングが違う。 | ||
| 行 435: | 行 536: | ||
| ===== エクスポート ===== | ===== エクスポート ===== | ||
| + | pg_dumpツールを使用する場合、保存形式がカスタム形式と平文形式があります。\\ | ||
| + | pg_restoreツールは保存形式がカスタム形式のみ対応しています。 | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | === バックアップ === | ||
| + | ^保存形式^バックアップコマンド^圧縮^データのみ^スキーマのみ^テーブル指定^ | ||
| + | |カスタム形式|pg_dump -Fc|〇|〇|〇|〇| | ||
| + | |平文形式|pg_dump -Fp(省略可)|×|〇|〇|〇| | ||
| + | |||
| + | === リストア === | ||
| + | ^保存形式^リストアツール^データのみ^スキーマのみ^テーブル指定^SQLに変換^TOCの確認 ※2^他DBへの移行^ | ||
| + | |カスタム形式|pg_restore|〇|〇|〇|〇|〇|〇※3| | ||
| + | |平文形式|psql等SQL実行環境|△※1|△※1|△※1|-|×|〇| | ||
| + | |||
| + | * ※1…バックアップ時に選択した対象を全てリストアする | ||
| + | * ※2…TOC=Table Of Contents。そのバックアップファイルにどのようなデータが格納されているかを一覧形式で確認したり、一覧から選んだデータだけリストアできる。 | ||
| + | * ※3…SQLに変換してから行う。変換時に標準SQLオプションを指定する事ができる為、平文形式より柔軟性が高い。 | ||
| ==== 全体 ==== | ==== 全体 ==== | ||
| pg_dumpall | pg_dumpall | ||
| ==== スキーマ単位 ==== | ==== スキーマ単位 ==== | ||
| - | pg_dump -h ホスト名 -p ポート番号 DB名 | + | pg_dump -n スキーマ名 |
| + | |||
| + | <code bat スキーマデータ取得.bat> | ||
| + | @echo off | ||
| + | |||
| + | SET PGPASSWORD=test | ||
| + | pg_dump -U test -n foo > foo.dump | ||
| + | </ | ||
| === リストア === | === リストア === | ||
| - | pg_restoreは、pg_dumpによってアーカイブされた平文形式以外のアーカイブファイルを使って、PostgreSQLデータベースをリストアするためのユーティリティ | + | 平文形式の場合、psqlコマンドでダンプファイルを指定してリストアする。 |
| + | < | ||
| + | psql -U test < foo.dump | ||
| + | </ | ||
| ==== テーブル単位 ==== | ==== テーブル単位 ==== | ||
| tオプションを指定する。\\ | tオプションを指定する。\\ | ||
| 行 452: | 行 581: | ||
| pg_dump -T (テーブル名) | pg_dump -T (テーブル名) | ||
| - | ==== スキーマ単位 ==== | + | |
| - | sオプションを指定する。\\ | + | |
| - | pg_dump -s (スキーマ名) | + | |
| 行 613: | 行 740: | ||
| |×|×|○|可 ※table scanが選択される可能性高い| | |×|×|○|可 ※table scanが選択される可能性高い| | ||
| |×|×|×|不可| | |×|×|×|不可| | ||
| + | |||
| + | === bloomインデックス === | ||
| + | bloomインデックスは、その名前のとおり、ブルームフィルタを用いて、条件を満たさないタプルを高速に除外する(=条件を満たす「かもしれない」タプルを残す)ことが可能なインデックスメソッドです。 | ||
| 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ | 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ | ||
| [[https:// | [[https:// | ||
| + | |||
| + | bloomインデックスの本領は、複数列に対するインデックス設定をするときに発揮されます。bloom複合列インデックスの場合は、定義した列の順序に関係なくインデックス検索→Birmap Scanになります。B-Treeインデックスが使われるたケースと比べると検索時間は遅くなりますが、SeqScanほど遅くはないという検索時間になります。 | ||
| + | |||
| + | <code sql> | ||
| + | -- 拡張追加 | ||
| + | create extension bloom | ||
| + | -- 拡張確認 | ||
| + | SELECT * FROM pg_available_extensions WHERE installed_version IS NOT NULL | ||
| + | -- bloomインデックスを追加 | ||
| + | CREATE INDEX idx_res_match ON res_match USING bloom (factory_cd, | ||
| + | </ | ||
| + | |||
| + | === PostgreSQL 18以降の場合 === | ||
| + | PostgreSQL 18の新機能「B-treeインデックスのスキップスキャン」により、先頭以外からでもインデックスが効くようになる。 | ||
| + | |||
| + | [[https:// | ||
| ==== 実行計画の取得 ==== | ==== 実行計画の取得 ==== | ||
| SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ | SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ | ||
it技術/データベース/postgresql.1708690303.txt.gz · 最終更新: 2024/02/23 21:11 by yajuadmin
