新機能や性能向上まとめ【PostgreSQL 15】
新機能まとめ
PostgreSQL 15が少し前にリリースされ、Oracleからの移行を考えたOracle互換関数など、個人的に面白いなと感じた機能も追加されていました。そのPostgreSQL 15の新機能や変更点を3つの面でまとめました。
1.SQL機能追加
2.性能改善
3.運用管理
それぞれについて解説・まとめをしていきます。
※ ここに記載する内容は、ほぼ次の動画を簡易的にまとめたものになります。動画にはここでは取り上げていない非互換の変更点なども紹介されています。是非動画をご参照ください(とても聞きやすくわかりやすい動画でした)。
1.SQL機能追加
① SQL構文(MERGE文)が追加されました
SQL標準機能でOracle、SQL Serverにもある構文、MERGE文が追加されました。
② 論理レプリケーションの機能が追加されました
・ 行フィルタ、列フィルタが可能になりました。
・ スキーマ単位でテーブルを一括指定できるようになりました。(従来はDB単位、テーブル単位のみ)
・ 論理レプリケーションでエラーが発生した際、サブスクリプションを無効にする(同じ原因のエラーが繰り返されログが圧迫するのを防ぐ、エラー原因そのものを解決するわけではない)
③ 正規表現の関数がたくさん追加されました
元々正規表現の関数群はあったが、Oracleと同じ書き方で書けるという機能が追加されました(Oracleから移植するニーズに対応)。
④ ビューに属性が追加
ビューに「security_invoker」という属性が追加されました。これによりビューを呼び出したユーザーの権限でビューのSELECT文を実行出来るようになりました。(テーブルに細かな権限設定をしても、ビューを経由されると単一ロールからのアクセスになってしまうと都合が悪いことがあったため)
2.性能改善
① 外部ソートのアルゴリズムが変更されました
PostgreSQLでソートする際には2つの方式「インメモリソート」「外部ソート」があります。その外部ソートのアルゴリズムが現代的でないという意見から「多層マージソート」から「K-way Mergesort」に変更されました。
インメモリソート…work_memサイズ内のメモリで処理できる場合。アルゴリズム:クイックソート
外部ソート…大規模ソートの場合、一時ファイルを使って実行
② ウインドウ関数のプランが改善されました
ウインドウ関数のうち、row_number()、rank()、count()で性能向上となりました。
③ psqlの\copy命令で性能が改善されました
データを1行ずつ送出→複数行をまとめて送出するように変更。得に列の少ないテーブルの「\copy FROM」で効果がある模様。
④ Zstandard圧縮をサポートするようになりました
Zstandardは最近の圧縮方式。WAL圧縮と、ベースバックアップに利用できます。
3.運用管理
① JSON形式のログがサポートされるようになりました。
CSV形式のログに加えて、JSON形式のログが出力できるようになりました。
② モニタリング用のビュー、関数が追加されました
pg_ident.confのファイル内容を見るビュー(pg_ident_file_mappings)などが追加されました。
③ 実行時の統計情報が共有メモリで管理するように変わりました
実行時統計情報(各テーブルの各種アクセス数 等々)は、従来ファイルに書き出していましたが、共有メモ上で管理して高速化に貢献。
④ WALのアーカイブ(更新ログ)
WALのアーカイブ処理を行うモジュールを処理可能になりました(従来はコマンドを記述する方式)。
⑤ モジュールによるベースバックアップが可能になりました
pg_basebackup(指定サーバーのバイナリバックアップを取得するコマンド)が、今までは実行したところのローカルになっていましたが、サーバー内のディレクトリも指定できるようになりました。