PostgreSQL 最新動向
- 最新バージョン機能と開発動向について -オープンソースカンファレンス Online Spring2023-03-11 10:00 - 10:45 (D 会場 )日本 PostgreSQL ユーザ会 理事 高塚 遥

1

TOC ：●「 PostgreSQL は今どうなっている？」を講演者 :●●45 分で解説●「 PostgreSQL ってなんだったっけ？」という人でも大丈夫●高塚 遥
日本 PostgreSQL ユーザ会理事
仕事ではヘルプデスク、コンサルティングなど、
PostgreSQL 支援業務

2

PostgreSQL とは●

多機能、高性能、かつオープンソースのリレーショナルデータベース管理システム– INGRES('70),POSTGRES('80) 由来の歴史– BSD タイプのライセンス–

特定オーナー企業が無い

ある種の OSS 開発体制

企業

企業

企業
PostgreSQL
製品開発者

企業
PostgreSQL 開発体制
3

PostgreSQL リリース
コード行数4,000,000
3,500,000
3,000,000‘11.092,500,000‘08.022,000,000 ‘05.01‘05.11

bitmapscan

500,000
0

PITR,MSVC‘10.09‘09.07‘06.121,500,000
1,000,000‘12.09‘21.09‘20.09‘19.10‘18.10‘17.10‘16.09‘16.01‘14.12‘13.09hot
Update

4core
scale

Replication

OLAP,
CTE

many
core
scale

SSI,FDW

JSONBParallel
query

RLS,MView, UPSERT
UView

JIT
compilelogicalRepli.

‘22.09deduplicate
Btree

Table
AM I/F

SEARCH/CYCLE

8.0 8.1 8.2 8.3 8.4 9.0 9.1 9.2 9.3 9.4 9.5 9.6 10 11 12 13 14 15 4

近年のエンハンスメント●

ロジカルレプリケーションとその強化 (10 - 15)●

Table Access Method 拡張用インタフェース (12)●Btree インデックスの重複除去、肥大化防止 (13 - 15)●

パラレルクエリ対応と強化（ 9.6 - 15)●

テーブルパーティショニング対応と強化 (10 - 15)●

拡張統計情報 (12 - 15)●

進捗モニタリング pg_stat_progress_* (10 - 15)
5

バージョン 15●●

2022 年 9 月リリース
性能向上

・ 全体的には劇的な性能アップなし
・ ピンポイントで改善●

外部ソートのアルゴリズム変更●

先読みによるリカバリ性能改善●

Zstandard 圧縮サポート●

ウィンドウ関数性能改善 row_number() 、 rank() 、 count()●

NOT IN 性能改善●

\copy FROM 性能改善●

実行時統計情報の共有メモリ格納
6

バージョン 15・ 意欲的な機能追加●

SQL 新機能●●●MERGE 文をサポート

・ 実用観点での拡張
・ 必要なら仕様変更

DDL 新機能●ロジカルレプリケーション機能追加●

呼び出し元権限で実行されるビュー

運用管理●

モジュールでベースバックアップ , WAL アーカイブ●

モニタリングビュー追加●

初期状態での public スキーマへの権限変更
7

開発中のバージョン 16
●

性能向上
●

WAL 追記の排他制御改善–●

チェックポイント処理の負荷軽減–●

数百～数千セッションの更新ベンチマークで 2 倍性能
新プロセス custodian に機能移管、起動停止が速く

background worker での論理レプリ処理 committed–

大量データ投入で効果的●

Hash インデックス作成高速化●

様々なパラレルクエリ可能な場合の追加●

各種プランナ改善、各種ロック軽減

committed

8

開発中のバージョン 16●

SQL 新機能●

整数リテラル : 10 進数以外、 3 桁区切り committed–'0x30B1' 、 '-0o0755' 、 '+0b0011' 、 '1_500_000'

SQL/JSON コンストラクタ構文（以前 15beta で取り下げ）

LET コマンド／セッション変数● 遅延ロジカルレプリケーション

パッケージ変数の代替に●●●

EXPLAIN で GENERIC_PLAN オプション●

XML インデント整形出力●

トランザクションタイムアウト transaction_timeout●

クライアント接続に対するイベントトリガ
9開発中のバージョン 16
●

サーバ機能
●

64bit XID

各行内は 32bit XID を使い、ページ毎にベース XID を置いて、両社を組み合わせて 64bit XID とする方式– XID 周回対策の処理負荷が大幅軽減
この辺りの大型機能は–●クライアント側での透過的列暗号化–●

サーバ側には暗号化されたデータのみ現れる

サーバ側の透過的暗号化–●

16 には間に合わなそうテーブルファイルを暗号化（メモリ上は平文）

TOAST モジュールの差し替えインタフェース
10開発中のバージョン 16●

モニタリング●

pg_verifybackup が進捗報告 committed●

モニタビュー追加 :–●pg_stat_io 、 pg_stat_checkpoint 、 pg_stat_session●

pg_stat_progress_vacuum: インデックス進捗●

pg_stat_statements: SQL 登場日時、 JIT 関連

運用機能
●
●
●

amcheck ユニーク制約検査
VACUUM に PROCESS_MAIN オプション
イベントトリガを一時無効化
11開発中のバージョン 16●

conf ファイル●

pg_hba.conf / ident_conf で include

pg_ident.conf で all や +group● pg_hba.conf で正規表現●●

committed
committed
committed

クライアント機能● psql: 変数追加、プロンプト変数追加

SHELL_EXIT_CODE 、 BACKEND_PID– %T （時刻）、 %N （ SET ROLE したロール名）–●

libpq: システム証明書、指定認証方式、ロードバランス–

sslrootcert=system 、 require_auth 、 load_balance_hosts
12現在の PostgreSQL と周辺
SQL 機能：SQL:2016 コア機能の大部分が適合● 各種のストアド言語●

地理情報対応 (PostGIS)● JSON 対応● 豊富な拡張インタフェース

クラスタ構成：
Streaming Replication● Logical Replication●HA クラスタ (active/standby)● MPP クラスタ (shared nothing)● RAC 型 (shared disk) は不可 △

●

●

性能：

運用：

●

●

参照更新で多コア性能スケール（ベンチマークベース）パーティション／パラレル対応● Just In Compile 対応● インメモリ対応 △●各種運用監視ツール／サービス有● 各種クライアントツール有
各種クラウド、 k8s 対応● 変更ストリーム対応●

13

CPU スケール（参照系）
9.2.x の段階で参照はスケール

コア数 =同時実行数ピークの結果

2012 年度 PGECons WG1 成果資料より
14

CPU スケール（更新系）
9.6.x の段階で更新スケール

2016 年度 PGECons WG1 成果資料よりあくまで単純なベンチマーク結果であることに注意！
15

PostgreSQL のレプリケーション
DB サーバインスタンス単位
WAL ストリームによる物理レプリケーション

DB サーバシングルマスタマルチスレーブ

9.0 から

DB サーバDB サーバDB サーバ

pg_rewind

9.5 から

テーブル単位論理レプリケーション
行限定、列限定など機能拡張

10 から

14 から
マルチマスタのテーブル単位
論理レプリケーションはPostgres-BDR で実現されている。

同期スタンバイを指定可能

9.1 から

DB サーバ

クォーラム指定（内何台に書込したら）10 からカスケード
可能
DB サーバ

9.2 から

16

PostgreSQL クラスタ構成●●

HA クラスタ●

Pacemaker 等の各種 HA クラスタソフトで対応●

k8s と k8s オペレータ

MPP クラスタ（シャーディング - データ分割格納）●●

Citus (Azure Hyperscale)●Postgres-XL●

GreenPlum

PostgreSQL 本体機能でも外部テーブル＋パーティショニングで相当程度シャーディングが可能

ロードバランサ●

Pgpool-II（制限あるが参照用に L3 汎用ロードバランサも有）17PostgreSQL の運用監視
pg_statsinfo●
pg_monz (Zabbix)●
pg_badger●
DataDog 、 Makerel●

https://www.postgresql.jp/sites/default/files/2017-01/
B1_PGCON_JP_kondo_nttoss.pdf より

https://www.sraoss.co.jp/technology/zabbix/introduction/pg_monz.php より

18

PostgreSQL のクライアントツール●

pgAdmin 4●

各種商用製品 PostgreSQL 対応●●

https://www.pgadmin.org/screenshots より●Navicat for PostgreSQLSI Object Browser for
Postgres

A5:SQL Mk-2

19

PostgreSQL でやや困難なケース●

データ投入性能の限界●●

OLTP 性能の限界●●●

IOT 方面／投入量要件と構成によっては専用製品に– WAL に直列的に書く設計であるため→ 改善は続いている。
大メモリや多 CPU コアを活かしきれない場合– 遅いストレージ格納を前提とした基本設計に起因スケールアウトが難しい

HA クラスタにおける高度要件●

インスタンス分割で対応。

障害復旧時間の最小化要件– 10 秒以内の切替など→ 改善は続いている。
現状で不足なら負荷を他に逃がす対応で。
→ トレードオフを許容すれば実現不可ではない20

PostgreSQL クラウド / コンテナ●

クラウドサービス●

Azure Database /Azure Hyperscale

●

●

●

K8s オペレータ●●

AWS RDS / Aurora
GCP Cloud SQL /AllyDB●●KubeDB
CrunchyData/
postgres-operator
Zalando/postgresoperator
Cloud Native
PostgreSQL (EDB)
21

PostgreSQL 互換 / PostgreSQL ベース●PostgreSQL 互換 DB●●PostgreSQL ベース DB 製品

GCP AlloyDB,●EnterpriseDB (EDB)

Spanner●Enterprise Postgres(Fujitsu)

AWS Aurora,Redshift●●Yugabyte●

CockroachDB

●

劔

●

PowerGres Plus
(SRAOSS)●

GreenPlum22

コミュニティと商用サポート●●●

開発コミュニティ (Mailing List, Git, Slack)(PostgreSQL Global Development Group)
国内のコミュニティ活動– 日本 PostgreSQL ユーザ会 (JPUG)– PostgreSQL エンタープライズ・コンソーシアム（ PGECons ）国内の商用サポート– 提供会社いくつかあり、取り扱い会社多数

23

ユーザ動向●JPUG による利用調査 2022 年版

24ユーザ動向●JPUG による利用調査 2022 年版
現在お使いの、あるいは、導入しようとしているデータベースシステムが稼動する環境は？

現業務でデータベースソフトウェアを使う
際の ＯS を教えてください（複数回答）（複数回答）

25

ユーザ動向26

JPUG の活動
●

イベント
●
●
●
●
●

●

●

●

PostgreSQL アンカンファレンス - オンラインで毎月開催
PostgreSQL カンファレンス - オンサイト開催を続けました
PostgreSQL 勉強会 - 各地支部で年１回～数回合宿 （ 2023 年度再開予定！）
OSC など各種イベントに出展（通年）

文書翻訳

https://github.com/pgsql-jp/jpug-doc

ML 運営 pgsql-jp@postgresql.jp, jpug-users@postgresql.jp●
最近は Slack postgresql-jp が中心
Web サイト ( www.postgresql.jp 、 lets.postgresql.jp ）27