SlideShare a Scribd company logo
© 2022, Amazon Web Services, Inc. or its affiliates.
© 2022, Amazon Web Services, Inc. or its affiliates.
PostgreSQL開発者が
PostgreSQL15の新機能を
徹底解説
澤田 雅彦 (Sawada Masahiko)
Senior Software Development Engineer
AWS
© 2022, Amazon Web Services, Inc. or its affiliates.
PostgreSQL 15 が10/15にリリース!
189個
の新機能
(229)
2472個
のコミット
(2702)
412人
の開発者
(415)
34人
の日本人開発者
(36)
© 2022, Amazon Web Services, Inc. or its affiliates.
PostgreSQL 10がEOL
3
© 2022, Amazon Web Services, Inc. or its affiliates.
Index
• SQL
• Logical Replicationの改善
• WAL、リカバリ、バックアップ
• 性能
• モニタリング
4
© 2022, Amazon Web Services, Inc. or its affiliates.
本発表について
• 本発表に掲載している検証結果は以下の環境で取得したものです
• 環境や条件などによっては、異なる結果となる可能性があります
• AWS EC2 m6ld.metal, RHEL8.6, 128 vCPUs, 512GB RAM, SSD
5
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGE
• ソーステーブルとターゲットテーブルの結合条件を元にテーブルに対して、
INSERT/UPDATE/DELETEを実行できる
• SQL標準
6
user_id last_login
100 2022/9/26 11:00
200 2022/7/13 13:00
user_id login_at
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
user_id last_login
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGE
7
user_id last_login
100 2022/9/26 11:00
200 2022/7/13 13:00
user_id login_at
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
user_id last_login
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
MERGE INTO user_history u USING login_history l
ON (u.user_id = l.user_id)
WHEN MATCHED THEN
UPDATE SET last_login = l.login_at
WHEN NOT MATCHED THEN
INSERT VALUES (l.user_id, l.login_at);
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGE
8
user_id last_login
100 2022/9/26 11:00
200 2022/7/13 13:00
user_id login_at
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
user_id last_login
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
MERGE INTO user_history u USING login_history l
ON (u.user_id = l.user_id)
WHEN MATCHED THEN
UPDATE SET last_login = l.login_at
WHEN NOT MATCHED THEN
INSERT VALUES (l.user_id, l.login_at);
user_idが一致する行があった場合の動作
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGE
9
user_id last_login
100 2022/9/26 11:00
200 2022/7/13 13:00
user_id login_at
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
user_id last_login
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
MERGE INTO user_history u USING login_history l
ON (u.user_id = l.user_id)
WHEN MATCHED THEN
UPDATE SET last_login = l.login_at
WHEN NOT MATCHED THEN
INSERT VALUES (l.user_id, l.login_at);
user_idが一致する行がなかった場合の動作
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGEで指定できるアクション
• INSERT
• UPDATE
• DELETE
• DO NOTHING
10
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGEの注意点
• 各行は0 or 1行と結合できる場合のみ動く
• 到達しない条件がある場合はシンタックスエラー
(ERROR: unreachable WHEN clause
specified after unconditional WHEN
clause)
11
11
user_id last_login
100 2022/9/26 11:00
200 2022/7/13 13:00
user_id login_at
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
100 2022/10/31 12:00
user_id last_login
100 2022/10/30 11:50
200 2022/10/14 10:40
300 2022/10/24 15:00
login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
WHEN MATCHED THEN
UPDATE SET last_login = l.login_at
WHEN NOT MATCHED THEN
INSERT VALUES (l.user_id, l.login_at);
WHEN MATCHED AND user_id = 100 THEN
DO NOTHING;
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGEとINSERT … ON CONFLICT
• どちらも「格納されている行に応じて動作を切り替える事」が可能
• MERGEはUPDATEだけでなく、INSERT/DELETEを指定することも可能
• MERGEとINSERT … ON CONFLICTは単純には置き換えられない
• 同時実行性
• 性能
• トリガ
12
© 2022, Amazon Web Services, Inc. or its affiliates.
MERGEの性能
13
0
2000
4000
6000
8000
10000
12000
INSERT … ON CONFLICT MERGE
300万件UPDATEした場合(ms)
0
1000
2000
3000
4000
5000
6000
7000
INSERT … ON CONFLICT MERGE
300万件INSERTした場合(ms)
• 「INSERTしたケース」と「コンフリクトしたからUPDATEしたケース」で
INSERT … ON CONFLICTとMERGEの性能を比較
© 2022, Amazon Web Services, Inc. or its affiliates.
Logical Replicationとは
• データベースの一部を他のデータベースに複製する機能
• WALをデコードした内容を送信する
• Publisher(送信側)とSubscriber(受信側)
• PUBLICATIONとSUBSCRIPTION
• CDC、BI、メジャーバージョンアップ、マルチマスター
14
© 2022, Amazon Web Services, Inc. or its affiliates.
CREATE SUBSCRIPTION … WITH (two_phase = on)
• 2相コミットの情報が複製可能になった
• Off(デフォルト)だとPublisherで2相コミットしても、通常のトランザクショ
ンとして複製される
• 未コミット/未ロールバックのトランザクションがSubscriberにも残るように
なるので注意
15
© 2022, Amazon Web Services, Inc. or its affiliates.
行フィルターと列フィルター
CREATE PUBLICATION pub1 FOR TABLE tbl (id, user), tbl2;
CREATE PUBLICATION pub2 FOR TABLE tbl WHERE (id % 2 = 0);
CREATE PUBLICATION pub3 FOR TABLE tbl (id, user) WHERE (id % 2 = 0);
16
• 送信側でデータをフィルタリング
• 同時に指定することも可能
© 2022, Amazon Web Services, Inc. or its affiliates.
スキーマ単位で送信テーブルを指定
• これまではテーブルを複数指定するか、ALL TABLESで全テーブル指定のみ
• 指定したスキーマ内の全テーブルを指定可能になった
• スキーマに新たに追加されるテーブルも対象
17
CREATE PUBLICATION pub1 FOR TABLE tbl;
CREATE PUBLICATION pub2 FOR ALL TABLES;
CREATE PUBLICATION pub3 FOR TABLES IN SCHEMA s1;
© 2022, Amazon Web Services, Inc. or its affiliates.
ALTER SUBSCRIPTION … SKIP
• より便利になった衝突解決のための新しい手段
• 衝突は様々な場面で起こり得る
• 例)Subscriberで同時にINSERTして主キー違反
• 衝突が解決するまでLogical Replicationはリトライし続ける
• 衝突を解決するには・・・
• 衝突している行を削除/更新
• Logical Replicationの開始地点を進める
18
© 2022, Amazon Web Services, Inc. or its affiliates.
ALTER SUBSCRIPTION … SKIP
ERROR: duplicate key value violates unique constraint "tbl_pkey"
DETAIL: Key (c)=(1) already exists.
CONTEXT: processing remote data for replication origin "pg_16389" during
"INSERT" for replication target relation "public.tbl" in transaction 740
finished at 0/1554338
サーバログ
• エラーになった操作、テーブル名、トランザクションID、トランザクション
が完了するLSNがサーバログに書かれる
• この情報を元に特定のトランザクションをスキップする
© 2022, Amazon Web Services, Inc. or its affiliates.
ALTER SUBSCRIPTION … SKIP
ERROR: duplicate key value violates unique constraint "tbl_pkey"
DETAIL: Key (c)=(1) already exists.
CONTEXT: processing remote data for replication origin "pg_16389" during "INSERT"
for replication target relation "public.tbl" in transaction 740 finished at
0/1554338
20
=# ALTER SUBSCRIPTION sub SKIP (lsn = ‘0/1554338’);
サーバログ
SQL
LOG: logical replication starts skipping transaction at LSN 0/1554338
LOG: logical replication completed skipping transaction at LSN 0/1554338
サーバログ
© 2022, Amazon Web Services, Inc. or its affiliates.
pg_basebackupの強化
• データベースクラスタ全体の物理バックアップを取得するツール
• サーバ側での圧縮(gzip, lz4, zstd)、クライアント側(gzip, lz4, zstd)での
圧縮をサポート
例)--compress=server-zstd, --compress=client-lz4,
--compress=server-zstd:level=9,workers=4
• バックアップの出力先(サーバ or クライアント)を指定可能に
例)--target=server:/some/path, --target=client
21
© 2022, Amazon Web Services, Inc. or its affiliates.
バックアップサイズとバックアップ取得時間を比較
• バックアップサイズは、圧縮方法、圧縮レベルを変えて検証
• バックアップ時間は、圧縮方法、並列数を変えて検証
• 同一サーバ上からpg_basebackupを実行したためサーバ側圧縮のみ実施
22
0
10
20
30
40
50
60
70
80
90
100
none server:zstd server:lz4 server:gzip
バックアップ時間(s)
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
none server:zstd server:lz4 server:gzip
バックアップサイズ(MB)
© 2022, Amazon Web Services, Inc. or its affiliates.
contrib/basebackup_to_shell
• 新しいバックアップ先としてshellを指定できるようになる
例) --target=shell:
• shared_preload_libraries = ‘basebackup_to_shell’
• basebackup_to_shell.command = ‘backup.sh %f %d’
23
© 2022, Amazon Web Services, Inc. or its affiliates.
[非互換] 排他バックアップが廃止
• バックアップには排他モード・非排他モードがあった
• SELECT pg_start_backup(‘label’, exclusive_backup => ‘true’);
• 排他モードでバックアップ取得中にサーバが再起動すると起動不可になる可
能性がある
• 排他モードは廃止
• pg_start_backup()とpg_stop_backup()は、pg_backup_start()と
pg_backup_stop()に関数名が変更
• 独自バックアップスクリプトで排他モードを使っている場合は、非排他モー
ドに移行する、もしくはpg_basebackupを利用する
24
© 2022, Amazon Web Services, Inc. or its affiliates.
archive_library
• WALアーカイブにライブラリを指定可能になった
• これまではarchive_commandにシェルコマンドを指定
• archiveプロセスが状態を持ちながら動作可能
• シェルコマンド起動(system()関数)のオーバーヘッドも省ける
• リファレンス実装としてcontrib/basic_archiveが追加
(test ! -f /path/to/dest && cp /path/to/src /path/to/des)
25
© 2022, Amazon Web Services, Inc. or its affiliates.
wal_compression = [off, on, pglz, lz4, zstd]
• WALの中のFull Page Imageを圧縮する
• lz4とzstdが新しく追加
• デフォルトはoff
26
0
200
400
600
800
1000
1200
1400
1600
off pglz lz4 zstd
WALサイズ
(3GBテーブルを全ページアップデート、FPIの割合約70%)
© 2022, Amazon Web Services, Inc. or its affiliates.
wal_compression = [off, on, pglz, lz4, zstd]
27
0
20000
40000
60000
80000
100000
120000
0 100 200 300 400 500 600
TPS (pgbench -T 300 -M prepared, sf:300)
off pglz lz4 zstd
© 2022, Amazon Web Services, Inc. or its affiliates.
contrib/pg_walinspect
• pg_waldumpコマンド相当の情報にSQLでアクセスできる
28
=# select * from pg_get_wal_record_info('1/A4619C00');
-[ RECORD 1 ]----+--------------------------------------------------------------------------------------
-------------------------------------
start_lsn | 1/A4619C10
end_lsn | 1/A4619E38
prev_lsn | 1/A4619BD0
xid | 774
resource_manager | Heap
record_type | LOCK
record_length | 545
main_data_length | 8
fpi_length | 484
description | off 46: xid 774: flags 0x01 LOCK_ONLY EXCL_LOCK
block_ref | blkref #0: rel 1663/5/16462 fork main blk 114 (FPW); hole: offset: 268, length: 116,
compression saved: 7592, method: zstd
© 2022, Amazon Web Services, Inc. or its affiliates.
contrib/pg_walinspect
• pg_waldumpコマンド相当の情報にSQLでアクセスできる
29
=# select * from pg_get_wal_stats('1/A45F7758', '1/B0115CB0') where "resource_manager/record_type" in ('Heap', 'Btree');
-[ RECORD 1 ]----------------+-------------------
resource_manager/record_type | Heap
count | 400000
count_percentage | 66.66533335999947
record_size | 46147442
record_size_percentage | 78.61281556682036
fpi_size | 78373262
fpi_size_percentage | 57.97230604301556
combined_size | 124520704
combined_size_percentage | 64.2213337278326
-[ RECORD 2 ]----------------+-------------------
resource_manager/record_type | Btree
count | 200000
count_percentage | 33.33266667999973
record_size | 12554093
record_size_percentage | 21.386073742022592
fpi_size | 56814156
fpi_size_percentage | 42.02514422849502
combined_size | 69368249
combined_size_percentage | 35.77655222013835
© 2022, Amazon Web Services, Inc. or its affiliates.
contrib/pg_walinspect
• pg_waldumpコマンド相当の情報にSQLでアクセスできる
30
=# select (sum(fpi_size) / sum(combined_size)) as fpi_ratio
from pg_get_wal_stats('1/A45F7758', '1/B0115CB0’);
fpi_ratio
------------------------
0.69724450466641785596
(1 row)
© 2022, Amazon Web Services, Inc. or its affiliates.
log_destination = jsonlog
• json形式でサーバログが出力可能になった
• logging_collector = onにする必要がある
• .jsonファイルにログが書かれる
31
{"timestamp":"2022-11-08 10:13:41.624
","pid":2934287,"session_id":"6369ad45.2cc60f","line_num":6,"session_start":"2022-11-08 10:13:41
JST","txid":0,"error_severity":"LOG","message":"database system is ready to accept
","backend_type":"postmaster","query_id":0}
{"timestamp":"2022-11-08
10:14:09.001","user":"masahiko","dbname":"postgres","pid":2934383,"remote_host":"[local]","session_id":"6369ad5e.2cc6
6f","line_num":1,"ps":"SELECT","session_start":"2022-11-08 10:14:06
","vxid":"3/2","txid":0,"error_severity":"ERROR","state_code":"42703","message":"column "a" does not
","statement":"select a;","cursor_position":8,"application_name":"psql","backend_type":"client backend","query_id":0}
© 2022, Amazon Web Services, Inc. or its affiliates.
log_destination = jsonlog
32
© 2022, Amazon Web Services, Inc. or its affiliates.
稼働統計情報が共有メモリベースに変更
• サーバの稼働統計情報(pg_stat_xxxで見れる情報)≠オプティマイザの統計
情報
• これまでは専用プロセス(stats collector)が集めていた
• 各プロセスはUDPでstats collectorに統計情報を送信
• 統計情報はファイルで共有
• これからは共有メモリ上で管理。stats collectorプロセスは廃止。
• サーバクラッシュ後に統計情報がリセットされる挙動はこれまでと同じ
33
© 2022, Amazon Web Services, Inc. or its affiliates.
単一列のソート性能が改善
• 単一列のソート時に扱うデータ量を削減することで、ソート性能が改善
• EXISTSやNOT EXISTSの時によく利用される
• 約700MBのテーブルでv14とv15の性能を比較
34
0
0.5
1
1.5
2
2.5
3
v14 v15
実行時間(ms)
© 2022, Amazon Web Services, Inc. or its affiliates.
その他の性能向上
• Parallel SELECT DISTINCT
• postgres_fdwがparallel commitをサポート
35
© 2022, Amazon Web Services, Inc. or its affiliates.
最後に
• PG15では、MERGE、ロジカルレプリケーションの強化、pg_basebackupの強
化を含む約200個の新しい改善が導入された
• PostgreSQL 10は昨日(11/10)にリリースされた10.23でEOL
• PostgreSQL 15.1も同時にリリースされた
• これバグかな?と思ったら
• もっと知りたい!
36
© 2022, Amazon Web Services, Inc. or its affiliates.
参考資料
• PostgreSQL 15.0 Documentation
(https://www.postgresql.org/docs/15/index.html)
• PostgreSQL 15 Release Note
(https://www.postgresql.org/docs/15/release-15.html)
• 篠田の虎の巻「PostgreSQL 15 Beta 1 新機能検証結果」
(https://h50146.www5.hpe.com/products/software/oe/linux/mainstream/support/lcc/pdf/PostgreSQL_15_Beta_1_New_Features_ja_2022052
4-1.pdf)
• PostgreSQL 15検証レポート – SRA OSS
(https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2022/10/pg15_report_20221020.pdf)
• オンライン物理バックアップの排他モードと非排他モードに ついて
(https://www.slideshare.net/nttdata-tech/postgresql-backup-mode-pgunconf34-nttdata)
• PostgreSQL の INSERT ON CONFLICT と MERGE の簡易性能比較
(https://qiita.com/fujii_masao/items/462bac9f6a107d6134c4)
• PostgreSQL 15 Statistics
(http://peter.eisentraut.org/blog/2022/10/25/postgresql-15-statistics)
• Speeding up sort performance in PostgreSQL 15
(https://www.citusdata.com/blog/2022/05/19/speeding-up-sort-performance-in-postgres-15/)
• Looking ahead at PostgreSQL 15
(https://www.slideshare.net/jkatz05/looking-ahead-at-postgresql-15)
• pg_basebackup could not set compression worker count - unsupported parameter
(http://rhaas.blogspot.com/2022/11/pgbasebackup-could-not-set-compression.html)
37
© 2022, Amazon Web Services, Inc. or its affiliates.
Thank you!
© 2022, Amazon Web Services, Inc. or its affiliates.
Masahiko Sawada
@masahiko_sawada
38

More Related Content

What's hot

Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
kasaharatt
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
 

Similar to PostgreSQL 15の新機能を徹底解説

Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用
QlikPresalesJapan
 
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
QlikPresalesJapan
 
Salesforce.com Service Cloud Spring'16 Update
Salesforce.com Service Cloud Spring'16 UpdateSalesforce.com Service Cloud Spring'16 Update
Salesforce.com Service Cloud Spring'16 Update
Yamase Hiroaki
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
 
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
Yusuke Kodama
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
lalha
 
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
QlikPresalesJapan
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic BeanstalkAmazon Web Services Japan
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
Google Cloud Platform - Japan
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Kazuyuki Miyake
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
Oshitari_kochi
 
Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用
QlikPresalesJapan
 
Amazon RDS for SQL Serverのソースとしての利用
Amazon RDS for SQL Serverのソースとしての利用Amazon RDS for SQL Serverのソースとしての利用
Amazon RDS for SQL Serverのソースとしての利用
QlikPresalesJapan
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
Noritaka Sekiyama
 
AWS Organizations
AWS OrganizationsAWS Organizations
AWS Organizations
Serverworks Co.,Ltd.
 
Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編
Takekazu Omi
 

Similar to PostgreSQL 15の新機能を徹底解説 (20)

Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用Google BigQueryのターゲットエンドポイントとしての利用
Google BigQueryのターゲットエンドポイントとしての利用
 
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
 
Salesforce.com Service Cloud Spring'16 Update
Salesforce.com Service Cloud Spring'16 UpdateSalesforce.com Service Cloud Spring'16 Update
Salesforce.com Service Cloud Spring'16 Update
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
Google Cloud ベストプラクティス:Google BigQuery 編 - 02 : データ処理 / クエリ / データ抽出
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用Snowflake on Googleのターゲットエンドポイントとしての利用
Snowflake on Googleのターゲットエンドポイントとしての利用
 
Amazon RDS for SQL Serverのソースとしての利用
Amazon RDS for SQL Serverのソースとしての利用Amazon RDS for SQL Serverのソースとしての利用
Amazon RDS for SQL Serverのソースとしての利用
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
 
Sql azure入門
Sql azure入門Sql azure入門
Sql azure入門
 
AWS Organizations
AWS OrganizationsAWS Organizations
AWS Organizations
 
Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編Cosmos DB 入門 multi model multi API編
Cosmos DB 入門 multi model multi API編
 

More from Masahiko Sawada

行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQLTransparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
Masahiko Sawada
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
Vacuum more efficient than ever
Vacuum more efficient than everVacuum more efficient than ever
Vacuum more efficient than ever
Masahiko Sawada
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
Masahiko Sawada
 
Parallel Vacuum
Parallel VacuumParallel Vacuum
Parallel Vacuum
Masahiko Sawada
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
Masahiko Sawada
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
 
FDW-based Sharding Update and Future
FDW-based Sharding Update and FutureFDW-based Sharding Update and Future
FDW-based Sharding Update and Future
Masahiko Sawada
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索
Masahiko Sawada
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題XID周回問題に潜む別の問題
XID周回問題に潜む別の問題
Masahiko Sawada
 

More from Masahiko Sawada (20)

行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
Transparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQLTransparent Data Encryption in PostgreSQL
Transparent Data Encryption in PostgreSQL
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
Vacuum more efficient than ever
Vacuum more efficient than everVacuum more efficient than ever
Vacuum more efficient than ever
 
Vacuumとzheap
VacuumとzheapVacuumとzheap
Vacuumとzheap
 
Parallel Vacuum
Parallel VacuumParallel Vacuum
Parallel Vacuum
 
PostgreSQLでスケールアウト
PostgreSQLでスケールアウトPostgreSQLでスケールアウト
PostgreSQLでスケールアウト
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
 
FDW-based Sharding Update and Future
FDW-based Sharding Update and FutureFDW-based Sharding Update and Future
FDW-based Sharding Update and Future
 
What’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributorWhat’s new in 9.6, by PostgreSQL contributor
What’s new in 9.6, by PostgreSQL contributor
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
 
pg_bigmと類似度検索
pg_bigmと類似度検索pg_bigmと類似度検索
pg_bigmと類似度検索
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
 
Introduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparoundIntroduction VAUUM, Freezing, XID wraparound
Introduction VAUUM, Freezing, XID wraparound
 
XID周回問題に潜む別の問題
XID周回問題に潜む別の問題XID周回問題に潜む別の問題
XID周回問題に潜む別の問題
 

PostgreSQL 15の新機能を徹底解説

  • 1. © 2022, Amazon Web Services, Inc. or its affiliates. © 2022, Amazon Web Services, Inc. or its affiliates. PostgreSQL開発者が PostgreSQL15の新機能を 徹底解説 澤田 雅彦 (Sawada Masahiko) Senior Software Development Engineer AWS
  • 2. © 2022, Amazon Web Services, Inc. or its affiliates. PostgreSQL 15 が10/15にリリース! 189個 の新機能 (229) 2472個 のコミット (2702) 412人 の開発者 (415) 34人 の日本人開発者 (36)
  • 3. © 2022, Amazon Web Services, Inc. or its affiliates. PostgreSQL 10がEOL 3
  • 4. © 2022, Amazon Web Services, Inc. or its affiliates. Index • SQL • Logical Replicationの改善 • WAL、リカバリ、バックアップ • 性能 • モニタリング 4
  • 5. © 2022, Amazon Web Services, Inc. or its affiliates. 本発表について • 本発表に掲載している検証結果は以下の環境で取得したものです • 環境や条件などによっては、異なる結果となる可能性があります • AWS EC2 m6ld.metal, RHEL8.6, 128 vCPUs, 512GB RAM, SSD 5
  • 6. © 2022, Amazon Web Services, Inc. or its affiliates. MERGE • ソーステーブルとターゲットテーブルの結合条件を元にテーブルに対して、 INSERT/UPDATE/DELETEを実行できる • SQL標準 6 user_id last_login 100 2022/9/26 11:00 200 2022/7/13 13:00 user_id login_at 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 user_id last_login 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後)
  • 7. © 2022, Amazon Web Services, Inc. or its affiliates. MERGE 7 user_id last_login 100 2022/9/26 11:00 200 2022/7/13 13:00 user_id login_at 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 user_id last_login 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後) MERGE INTO user_history u USING login_history l ON (u.user_id = l.user_id) WHEN MATCHED THEN UPDATE SET last_login = l.login_at WHEN NOT MATCHED THEN INSERT VALUES (l.user_id, l.login_at);
  • 8. © 2022, Amazon Web Services, Inc. or its affiliates. MERGE 8 user_id last_login 100 2022/9/26 11:00 200 2022/7/13 13:00 user_id login_at 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 user_id last_login 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後) MERGE INTO user_history u USING login_history l ON (u.user_id = l.user_id) WHEN MATCHED THEN UPDATE SET last_login = l.login_at WHEN NOT MATCHED THEN INSERT VALUES (l.user_id, l.login_at); user_idが一致する行があった場合の動作
  • 9. © 2022, Amazon Web Services, Inc. or its affiliates. MERGE 9 user_id last_login 100 2022/9/26 11:00 200 2022/7/13 13:00 user_id login_at 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 user_id last_login 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後) MERGE INTO user_history u USING login_history l ON (u.user_id = l.user_id) WHEN MATCHED THEN UPDATE SET last_login = l.login_at WHEN NOT MATCHED THEN INSERT VALUES (l.user_id, l.login_at); user_idが一致する行がなかった場合の動作
  • 10. © 2022, Amazon Web Services, Inc. or its affiliates. MERGEで指定できるアクション • INSERT • UPDATE • DELETE • DO NOTHING 10
  • 11. © 2022, Amazon Web Services, Inc. or its affiliates. MERGEの注意点 • 各行は0 or 1行と結合できる場合のみ動く • 到達しない条件がある場合はシンタックスエラー (ERROR: unreachable WHEN clause specified after unconditional WHEN clause) 11 11 user_id last_login 100 2022/9/26 11:00 200 2022/7/13 13:00 user_id login_at 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 100 2022/10/31 12:00 user_id last_login 100 2022/10/30 11:50 200 2022/10/14 10:40 300 2022/10/24 15:00 login_historyテーブル (ソース) user_historyテーブル (ターゲット) user_historテーブル (MERGE後) WHEN MATCHED THEN UPDATE SET last_login = l.login_at WHEN NOT MATCHED THEN INSERT VALUES (l.user_id, l.login_at); WHEN MATCHED AND user_id = 100 THEN DO NOTHING;
  • 12. © 2022, Amazon Web Services, Inc. or its affiliates. MERGEとINSERT … ON CONFLICT • どちらも「格納されている行に応じて動作を切り替える事」が可能 • MERGEはUPDATEだけでなく、INSERT/DELETEを指定することも可能 • MERGEとINSERT … ON CONFLICTは単純には置き換えられない • 同時実行性 • 性能 • トリガ 12
  • 13. © 2022, Amazon Web Services, Inc. or its affiliates. MERGEの性能 13 0 2000 4000 6000 8000 10000 12000 INSERT … ON CONFLICT MERGE 300万件UPDATEした場合(ms) 0 1000 2000 3000 4000 5000 6000 7000 INSERT … ON CONFLICT MERGE 300万件INSERTした場合(ms) • 「INSERTしたケース」と「コンフリクトしたからUPDATEしたケース」で INSERT … ON CONFLICTとMERGEの性能を比較
  • 14. © 2022, Amazon Web Services, Inc. or its affiliates. Logical Replicationとは • データベースの一部を他のデータベースに複製する機能 • WALをデコードした内容を送信する • Publisher(送信側)とSubscriber(受信側) • PUBLICATIONとSUBSCRIPTION • CDC、BI、メジャーバージョンアップ、マルチマスター 14
  • 15. © 2022, Amazon Web Services, Inc. or its affiliates. CREATE SUBSCRIPTION … WITH (two_phase = on) • 2相コミットの情報が複製可能になった • Off(デフォルト)だとPublisherで2相コミットしても、通常のトランザクショ ンとして複製される • 未コミット/未ロールバックのトランザクションがSubscriberにも残るように なるので注意 15
  • 16. © 2022, Amazon Web Services, Inc. or its affiliates. 行フィルターと列フィルター CREATE PUBLICATION pub1 FOR TABLE tbl (id, user), tbl2; CREATE PUBLICATION pub2 FOR TABLE tbl WHERE (id % 2 = 0); CREATE PUBLICATION pub3 FOR TABLE tbl (id, user) WHERE (id % 2 = 0); 16 • 送信側でデータをフィルタリング • 同時に指定することも可能
  • 17. © 2022, Amazon Web Services, Inc. or its affiliates. スキーマ単位で送信テーブルを指定 • これまではテーブルを複数指定するか、ALL TABLESで全テーブル指定のみ • 指定したスキーマ内の全テーブルを指定可能になった • スキーマに新たに追加されるテーブルも対象 17 CREATE PUBLICATION pub1 FOR TABLE tbl; CREATE PUBLICATION pub2 FOR ALL TABLES; CREATE PUBLICATION pub3 FOR TABLES IN SCHEMA s1;
  • 18. © 2022, Amazon Web Services, Inc. or its affiliates. ALTER SUBSCRIPTION … SKIP • より便利になった衝突解決のための新しい手段 • 衝突は様々な場面で起こり得る • 例)Subscriberで同時にINSERTして主キー違反 • 衝突が解決するまでLogical Replicationはリトライし続ける • 衝突を解決するには・・・ • 衝突している行を削除/更新 • Logical Replicationの開始地点を進める 18
  • 19. © 2022, Amazon Web Services, Inc. or its affiliates. ALTER SUBSCRIPTION … SKIP ERROR: duplicate key value violates unique constraint "tbl_pkey" DETAIL: Key (c)=(1) already exists. CONTEXT: processing remote data for replication origin "pg_16389" during "INSERT" for replication target relation "public.tbl" in transaction 740 finished at 0/1554338 サーバログ • エラーになった操作、テーブル名、トランザクションID、トランザクション が完了するLSNがサーバログに書かれる • この情報を元に特定のトランザクションをスキップする
  • 20. © 2022, Amazon Web Services, Inc. or its affiliates. ALTER SUBSCRIPTION … SKIP ERROR: duplicate key value violates unique constraint "tbl_pkey" DETAIL: Key (c)=(1) already exists. CONTEXT: processing remote data for replication origin "pg_16389" during "INSERT" for replication target relation "public.tbl" in transaction 740 finished at 0/1554338 20 =# ALTER SUBSCRIPTION sub SKIP (lsn = ‘0/1554338’); サーバログ SQL LOG: logical replication starts skipping transaction at LSN 0/1554338 LOG: logical replication completed skipping transaction at LSN 0/1554338 サーバログ
  • 21. © 2022, Amazon Web Services, Inc. or its affiliates. pg_basebackupの強化 • データベースクラスタ全体の物理バックアップを取得するツール • サーバ側での圧縮(gzip, lz4, zstd)、クライアント側(gzip, lz4, zstd)での 圧縮をサポート 例)--compress=server-zstd, --compress=client-lz4, --compress=server-zstd:level=9,workers=4 • バックアップの出力先(サーバ or クライアント)を指定可能に 例)--target=server:/some/path, --target=client 21
  • 22. © 2022, Amazon Web Services, Inc. or its affiliates. バックアップサイズとバックアップ取得時間を比較 • バックアップサイズは、圧縮方法、圧縮レベルを変えて検証 • バックアップ時間は、圧縮方法、並列数を変えて検証 • 同一サーバ上からpg_basebackupを実行したためサーバ側圧縮のみ実施 22 0 10 20 30 40 50 60 70 80 90 100 none server:zstd server:lz4 server:gzip バックアップ時間(s) 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 none server:zstd server:lz4 server:gzip バックアップサイズ(MB)
  • 23. © 2022, Amazon Web Services, Inc. or its affiliates. contrib/basebackup_to_shell • 新しいバックアップ先としてshellを指定できるようになる 例) --target=shell: • shared_preload_libraries = ‘basebackup_to_shell’ • basebackup_to_shell.command = ‘backup.sh %f %d’ 23
  • 24. © 2022, Amazon Web Services, Inc. or its affiliates. [非互換] 排他バックアップが廃止 • バックアップには排他モード・非排他モードがあった • SELECT pg_start_backup(‘label’, exclusive_backup => ‘true’); • 排他モードでバックアップ取得中にサーバが再起動すると起動不可になる可 能性がある • 排他モードは廃止 • pg_start_backup()とpg_stop_backup()は、pg_backup_start()と pg_backup_stop()に関数名が変更 • 独自バックアップスクリプトで排他モードを使っている場合は、非排他モー ドに移行する、もしくはpg_basebackupを利用する 24
  • 25. © 2022, Amazon Web Services, Inc. or its affiliates. archive_library • WALアーカイブにライブラリを指定可能になった • これまではarchive_commandにシェルコマンドを指定 • archiveプロセスが状態を持ちながら動作可能 • シェルコマンド起動(system()関数)のオーバーヘッドも省ける • リファレンス実装としてcontrib/basic_archiveが追加 (test ! -f /path/to/dest && cp /path/to/src /path/to/des) 25
  • 26. © 2022, Amazon Web Services, Inc. or its affiliates. wal_compression = [off, on, pglz, lz4, zstd] • WALの中のFull Page Imageを圧縮する • lz4とzstdが新しく追加 • デフォルトはoff 26 0 200 400 600 800 1000 1200 1400 1600 off pglz lz4 zstd WALサイズ (3GBテーブルを全ページアップデート、FPIの割合約70%)
  • 27. © 2022, Amazon Web Services, Inc. or its affiliates. wal_compression = [off, on, pglz, lz4, zstd] 27 0 20000 40000 60000 80000 100000 120000 0 100 200 300 400 500 600 TPS (pgbench -T 300 -M prepared, sf:300) off pglz lz4 zstd
  • 28. © 2022, Amazon Web Services, Inc. or its affiliates. contrib/pg_walinspect • pg_waldumpコマンド相当の情報にSQLでアクセスできる 28 =# select * from pg_get_wal_record_info('1/A4619C00'); -[ RECORD 1 ]----+-------------------------------------------------------------------------------------- ------------------------------------- start_lsn | 1/A4619C10 end_lsn | 1/A4619E38 prev_lsn | 1/A4619BD0 xid | 774 resource_manager | Heap record_type | LOCK record_length | 545 main_data_length | 8 fpi_length | 484 description | off 46: xid 774: flags 0x01 LOCK_ONLY EXCL_LOCK block_ref | blkref #0: rel 1663/5/16462 fork main blk 114 (FPW); hole: offset: 268, length: 116, compression saved: 7592, method: zstd
  • 29. © 2022, Amazon Web Services, Inc. or its affiliates. contrib/pg_walinspect • pg_waldumpコマンド相当の情報にSQLでアクセスできる 29 =# select * from pg_get_wal_stats('1/A45F7758', '1/B0115CB0') where "resource_manager/record_type" in ('Heap', 'Btree'); -[ RECORD 1 ]----------------+------------------- resource_manager/record_type | Heap count | 400000 count_percentage | 66.66533335999947 record_size | 46147442 record_size_percentage | 78.61281556682036 fpi_size | 78373262 fpi_size_percentage | 57.97230604301556 combined_size | 124520704 combined_size_percentage | 64.2213337278326 -[ RECORD 2 ]----------------+------------------- resource_manager/record_type | Btree count | 200000 count_percentage | 33.33266667999973 record_size | 12554093 record_size_percentage | 21.386073742022592 fpi_size | 56814156 fpi_size_percentage | 42.02514422849502 combined_size | 69368249 combined_size_percentage | 35.77655222013835
  • 30. © 2022, Amazon Web Services, Inc. or its affiliates. contrib/pg_walinspect • pg_waldumpコマンド相当の情報にSQLでアクセスできる 30 =# select (sum(fpi_size) / sum(combined_size)) as fpi_ratio from pg_get_wal_stats('1/A45F7758', '1/B0115CB0’); fpi_ratio ------------------------ 0.69724450466641785596 (1 row)
  • 31. © 2022, Amazon Web Services, Inc. or its affiliates. log_destination = jsonlog • json形式でサーバログが出力可能になった • logging_collector = onにする必要がある • .jsonファイルにログが書かれる 31 {"timestamp":"2022-11-08 10:13:41.624 ","pid":2934287,"session_id":"6369ad45.2cc60f","line_num":6,"session_start":"2022-11-08 10:13:41 JST","txid":0,"error_severity":"LOG","message":"database system is ready to accept ","backend_type":"postmaster","query_id":0} {"timestamp":"2022-11-08 10:14:09.001","user":"masahiko","dbname":"postgres","pid":2934383,"remote_host":"[local]","session_id":"6369ad5e.2cc6 6f","line_num":1,"ps":"SELECT","session_start":"2022-11-08 10:14:06 ","vxid":"3/2","txid":0,"error_severity":"ERROR","state_code":"42703","message":"column "a" does not ","statement":"select a;","cursor_position":8,"application_name":"psql","backend_type":"client backend","query_id":0}
  • 32. © 2022, Amazon Web Services, Inc. or its affiliates. log_destination = jsonlog 32
  • 33. © 2022, Amazon Web Services, Inc. or its affiliates. 稼働統計情報が共有メモリベースに変更 • サーバの稼働統計情報(pg_stat_xxxで見れる情報)≠オプティマイザの統計 情報 • これまでは専用プロセス(stats collector)が集めていた • 各プロセスはUDPでstats collectorに統計情報を送信 • 統計情報はファイルで共有 • これからは共有メモリ上で管理。stats collectorプロセスは廃止。 • サーバクラッシュ後に統計情報がリセットされる挙動はこれまでと同じ 33
  • 34. © 2022, Amazon Web Services, Inc. or its affiliates. 単一列のソート性能が改善 • 単一列のソート時に扱うデータ量を削減することで、ソート性能が改善 • EXISTSやNOT EXISTSの時によく利用される • 約700MBのテーブルでv14とv15の性能を比較 34 0 0.5 1 1.5 2 2.5 3 v14 v15 実行時間(ms)
  • 35. © 2022, Amazon Web Services, Inc. or its affiliates. その他の性能向上 • Parallel SELECT DISTINCT • postgres_fdwがparallel commitをサポート 35
  • 36. © 2022, Amazon Web Services, Inc. or its affiliates. 最後に • PG15では、MERGE、ロジカルレプリケーションの強化、pg_basebackupの強 化を含む約200個の新しい改善が導入された • PostgreSQL 10は昨日(11/10)にリリースされた10.23でEOL • PostgreSQL 15.1も同時にリリースされた • これバグかな?と思ったら • もっと知りたい! 36
  • 37. © 2022, Amazon Web Services, Inc. or its affiliates. 参考資料 • PostgreSQL 15.0 Documentation (https://www.postgresql.org/docs/15/index.html) • PostgreSQL 15 Release Note (https://www.postgresql.org/docs/15/release-15.html) • 篠田の虎の巻「PostgreSQL 15 Beta 1 新機能検証結果」 (https://h50146.www5.hpe.com/products/software/oe/linux/mainstream/support/lcc/pdf/PostgreSQL_15_Beta_1_New_Features_ja_2022052 4-1.pdf) • PostgreSQL 15検証レポート – SRA OSS (https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2022/10/pg15_report_20221020.pdf) • オンライン物理バックアップの排他モードと非排他モードに ついて (https://www.slideshare.net/nttdata-tech/postgresql-backup-mode-pgunconf34-nttdata) • PostgreSQL の INSERT ON CONFLICT と MERGE の簡易性能比較 (https://qiita.com/fujii_masao/items/462bac9f6a107d6134c4) • PostgreSQL 15 Statistics (http://peter.eisentraut.org/blog/2022/10/25/postgresql-15-statistics) • Speeding up sort performance in PostgreSQL 15 (https://www.citusdata.com/blog/2022/05/19/speeding-up-sort-performance-in-postgres-15/) • Looking ahead at PostgreSQL 15 (https://www.slideshare.net/jkatz05/looking-ahead-at-postgresql-15) • pg_basebackup could not set compression worker count - unsupported parameter (http://rhaas.blogspot.com/2022/11/pgbasebackup-could-not-set-compression.html) 37
  • 38. © 2022, Amazon Web Services, Inc. or its affiliates. Thank you! © 2022, Amazon Web Services, Inc. or its affiliates. Masahiko Sawada @masahiko_sawada 38