ユーザ用ツール

サイト用ツール


it技術:データベース:postgresql

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
it技術:データベース:postgresql [2023/12/16 09:26] – [複合インデックス] yajuadminit技術:データベース:postgresql [2024/11/15 10:00] (現在) – [スキーマ単位] yajuadmin
行 9: 行 9:
  
  
-将来的には追記型アーキテクチャを捨てて、EnterpriseDBが率先して開発している「zHeap」の実装して他のデータベースのようにUNDOログをもつようにしたい。\\+将来的には追記型アーキテクチャを捨てて、EnterpriseDBが率先して開発している「zHeap」の実装して他のデータベースのようにUNDOログをもつようにしたい。→ その後zHeapのメイン開発者が抜けて休止状態\\
 [[https://gihyo.jp/dev/column/newyear/2019/postgresql?page=2|データベースとして,オープンソースとして,コミュニティとして ―石井達夫氏が語るPostgreSQLの強さと課題]] [[https://gihyo.jp/dev/column/newyear/2019/postgresql?page=2|データベースとして,オープンソースとして,コミュニティとして ―石井達夫氏が語るPostgreSQLの強さと課題]]
 ===== 接続ドライバー ===== ===== 接続ドライバー =====
行 57: 行 57:
 |14.0|2021/09/30|[[it技術:データベース:postgresql#postgresql14情報|postgresql14情報]] | |14.0|2021/09/30|[[it技術:データベース:postgresql#postgresql14情報|postgresql14情報]] |
 |15.0|2022/10/06|[[it技術:データベース:postgresql#postgresql15情報|postgresql15情報]] | |15.0|2022/10/06|[[it技術:データベース:postgresql#postgresql15情報|postgresql15情報]] |
 +|16.0|2023/09/14|[[it技術:データベース:postgresql#postgresql16情報|postgresql16情報]] |
 +|17.0|2024/09/26|[[it技術:データベース:postgresql#postgresql17情報|postgresql17情報]] |
 +
 ==== サポート終了期限(EOL=End Of Life) ==== ==== サポート終了期限(EOL=End Of Life) ====
 https://www.postgresql.org/support/versioning/ https://www.postgresql.org/support/versioning/
  
 ^バージョン^初期リリース日^サポート終了期限^ ^バージョン^初期リリース日^サポート終了期限^
 +|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日|
行 220: 行 225:
   * バージョン非互換対応(新機能ではないけど)   * バージョン非互換対応(新機能ではないけど)
     * PublicスキーマのCreate権限がデフォルトからなくなる      * PublicスキーマのCreate権限がデフォルトからなくなる 
 +
 +==== PostgreSQL16情報 ====
 +2023-09-14にリリース
 +
 +=== 主な新機能 ===
 +[[https://www.sraoss.co.jp/tech-blog/pgsql/pg16report/|PostgreSQL 16検証報告]]\\
 +[[https://community.hpe.com/t5/hpe-blog-japan/%E7%AF%A0%E7%94%B0%E3%81%AE%E8%99%8E%E3%81%AE%E5%B7%BB-postgresql-16-beta-1-%E6%96%B0%E6%A9%9F%E8%83%BD%E6%A4%9C%E8%A8%BC%E7%B5%90%E6%9E%9C-%E5%85%AC%E9%96%8B/ba-p/7188972?profile.language=ja|篠田の虎の巻「PostgreSQL 16 Beta 1 新機能検証結果」公開!]]
 +
 +  * 性能向上
 +    * パラレルクエリ対応追加
 +    * ウィンドウ関数の最適化
 +    * 同時データ投入の性能向上
 +    * SIMD CPUアクセラレータ対応
 +  * SQL機能
 +    * SQL/JSON 対応
 +    * 整数リテラル表現の追加
 +    * ICU照合順序の拡張
 +    * ロジカルレプリケーション機能追加
 +    * スタンバイ上でのパブリケーション
 +    * トランザクションの並列適用
 +    * 双方向ロジカルレプリケーション
 +  * クライアント機能
 +    * libpqロードバランス
 +    * psqlで拡張プロトコル対応
 +    * pg_dump圧縮オプション追加
 +  * 運用管理
 +    * 新たなモニタリング項目
 +    * 新たな定義済みロール
 +    * ページ凍結の改善
 +    * VACUUMリングバッファ指定
 +    * Mesonビルド
 +
 +==== PostgreSQL17情報 ====
 +2024-09-26にリリース
 +
 +=== 主な新機能 ===
 +[[https://www.sraoss.co.jp/tech-blog/pgsql/pg17report/|PostgreSQL 17検証報告]]\\
 +[[https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2024/09/pg17_report_20240917.pdf|PostgreSQL 17 検証レポート - pdf]]
 +
 +  * 性能向上
 +    * VACUUM性能改善
 +    * COPY性能向上
 +    * ストリームI/O対応
 +    * 各種プランナ改善
 +  * SQL機能
 +    * SQL/JSON対応の拡充
 +    * MERGE文の拡張
 +    * COPY FROM に ON_ERROR オプション追加
 +  * ロジカルレプリケーション機能追加
 +    * pg_upgrade 対応の改善
 +    * フェイルオーバに対応
 +    * pg_createsubscriberコマンド追加
 +  * パーティショニング機能
 +    * 排他制約に対応
 +    * IDENTITY列に対応
 +  * 運用管理
 +    * インクリメンタルバックアップ
 +    * 新たな定義済みロール
 +    * 新たなモニタリングビュー
 +    * pg_dump の –filterオプション
 +
 ===== 設定について ===== ===== 設定について =====
 postgresql.confの設定値は、下記SQLで context の値により設定反映のタイミングが違う。 postgresql.confの設定値は、下記SQLで context の値により設定反映のタイミングが違う。
行 434: 行 500:
  
 ===== エクスポート ===== ===== エクスポート =====
 +pg_dumpツールを使用する場合、保存形式がカスタム形式と平文形式があります。\\
 +pg_restoreツールは保存形式がカスタム形式のみ対応しています。
 +
 +[[https://qiita.com/jun1s/items/8ba778b91258c33396e8|[PostgreSQL]pg_dumpとpg_restoreを用いたバックアップとリストア]]
 +
 +=== バックアップ ===
 +^保存形式^バックアップコマンド^圧縮^データのみ^スキーマのみ^テーブル指定^
 +|カスタム形式|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 - 
 + 
 +<code bat スキーマデータ取得.bat> 
 +@echo off 
 + 
 +SET PGPASSWORD=test 
 +pg_dump -U test -n foo > foo.dump 
 +</code>
  
 === リストア === === リストア ===
-pg_restoreは、pg_dumpによってアーカイブされた平文形式以外アーカイブファイルを使っ、PostgreSQLデータベースをリストアするためのユーティリティ+平文形式の場合、psqlコマンドでダンプファイルを指定してリストアする。 
 +<code> 
 +psql -U test < foo.dump 
 +</code>
 ==== テーブル単位 ==== ==== テーブル単位 ====
 tオプションを指定する。\\ tオプションを指定する。\\
行 451: 行 545:
 pg_dump -T (テーブル名) pg_dump -T (テーブル名)
  
-==== スキーマ単位 ==== +
-sオプションを指定する。\\ +
-pg_dump -s (スキーマ名)+
  
  
行 612: 行 704:
 |×|×|○|可 ※table scanが選択される可能性高い| |×|×|○|可 ※table scanが選択される可能性高い|
 |×|×|×|不可| |×|×|×|不可|
 +
 +=== bloomインデックス ===
 +bloomインデックスは、その名前のとおり、ブルームフィルタを用いて、条件を満たさないタプルを高速に除外する(=条件を満たす「かもしれない」タプルを残す)ことが可能なインデックスメソッドです。
  
 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\ 主キーが複数の場合のインデックスにはデフォルトのb-treeインデックスが使用されるが、弱点として先頭のキーが外れるとインデックスが使われなくなる。その場合に複数列インデックスには、bloomインデックスを使用することで、先頭のキーが条件が外れていてもインデックスが使われる。\\
 [[https://qiita.com/nuko_yokohama/items/4a7fe2a731a479189034|bloomインデックス]] [[https://qiita.com/nuko_yokohama/items/4a7fe2a731a479189034|bloomインデックス]]
 +
 +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, line_cd, seq_no, lotserial, cp_cd)
 +</code>
 ==== 実行計画の取得 ==== ==== 実行計画の取得 ====
 SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\ SQLの前に「EXPLAIN」か「EXPLAIN ANALYZE」を付ける。\\
it技術/データベース/postgresql.1702686370.txt.gz · 最終更新: 2023/12/16 09:26 by yajuadmin