SlideShare a Scribd company logo
オープンソースカンファレンス2021 Hokkaido
© 2021 NTT DATA Corporation
押さえておきたい、PostgreSQL 13 の新機能!!
2021年6月26日
株式会社NTTデータ 藤井 雅雄
© 2021 NTT DATA Corporation 2
2
© 2021 NTT DATA Corporation
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール)コミッタ
@fujii_masao
v13~
© 2021 NTT DATA Corporation 3
3
© 2021 NTT DATA Corporation
https://codezine.jp/article/detail/14175
© 2021 NTT DATA Corporation 4
本講演について
講演資料は、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。
環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
© 2021 NTT DATA Corporation 5
5
© 2021 NTT DATA Corporation
PostgreSQL13
2020年9月24日リリースのPostgreSQL最新メジャーバージョン
約170個の新機能や変更点
– 継続的なパフォーマンス改善
– アプリケーション開発の利便性向上
– 運用・監視の機能強化
v13新機能の参考資料
– 篠田の虎の巻「PostgreSQL 13 新機能検証」
– SRA OSS Tech Blog「PostgreSQL 13 検証報告」
https://lets.postgresql.jp/documents/technical/13
© 2021 NTT DATA Corporation 6
6
© 2021 NTT DATA Corporation
PostgreSQL13
v13の最新マイナーバージョンは v13.3 (2021-05-13リリース)
周辺モジュールやPostgreSQLマネージドサービスもv13対応が進んでいる
– PG-REX, pg_hint_plan, pg_statsinfo, pg_bulkload,
pg_rman, pg_bigm, pg_repack, PostGIS, etc
– Amazon RDS for PostgreSQL, GCP Cloud SQL,
Azure Hyperscale (preview)
利用中のPostgreSQLの v13への
バージョンアップを検討してもよい時期??
© 2021 NTT DATA Corporation
継続的なパフォーマンス改善
8
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
code name
11 AAA
22 BBB
22 CCC
22 DDD
33 EEE
code
11
22
22
22
33
テーブル
B-treeインデックス
‐ B-treeインデックスでは、
各エントリがテーブルへの
ポインタ(TID)を持つ構造
‐ キー値が重複する場合も、
各エントリがポインタを持つ
~v12
9
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
code name
11 AAA
22 BBB
22 CCC
22 DDD
33 EEE
code
11
22
22
22
33
code
11
22
33
v13から、
B-treeインデックスで、重複するエントリをまとめてインデックスサイズを削減可能に!
テーブル
B-treeインデックス B-treeインデックス
キー値が の重複エ
ントリ3つについて、
ポインタをリスト化して、
エントリをまとめる
~v12
v13~
v13~
22
10
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
=# CREATE INDEX testidx ON test (code) WITH (deduplicate_items = off);
=# ALTER INDEX testidx SET (deduplicate_items = on);
重複エントリを排除するかは、インデックス毎にdeduplicate_itemsオプションで設定可能
on
off
:
:
重複エントリを排除する (デフォルト)
重複エントリを排除しない (v12以前と同じ動き)
11
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
code
11
22
code
11
22
22
code
11
22
22
22
code
11
22
エントリ 22 の追加 エントリ 22 の追加
重複エントリ排除
ページに収まるため、
重複エントリはそのまま
ページに収まらないため、
重複エントリを排除する
ページ
インデックスの
ページ分割を回避できる
(凡例)
重複エントリを排除するのは、エントリがページに収まらないとき
重複エントリ排除を遅延させることで、排除処理のオーバーヘッドを回避
CREATE INDEXやREINDEXは、即座に重複エントリを排除する(遅延させない)
インデックス インデックス インデックス インデックス
12
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
重複エントリ排除on/offでのインデックスサイズとINSERT性能の比較
‐ integer型カラムに対してインデックス作成
‐ レコード1億件について重複割合を0%(重複なし)、20%、40%、
60%、80%、100%(1億件すべてが重複)と変えながらINSERT
‐ INSERT後のインデックスサイズとINSERT時間を計測
13
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
0
500
1000
1500
2000
2500
0 20 40 60 80 100
インデックスサイズ(MB)
重複エントリの割合(%)
on
off
重複排除onでは、
重複エントリの割合が大きいほど、インデックスサイズの削減効果が大きい
14
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
80
85
90
95
100
105
0 20 40 60 80 100
INSERT時間(秒)
重複エントリの割合(%)
on
off
重複エントリの割合が小さく、
INSERTオンリーの場合は
重複排除offを検討する価値がある
重複排除onでは、
重複エントリの割合が小さいほど、INSERT時の性能オーバーヘッドが見えやすい
15
© 2021 NTT DATA Corporation
インクリメンタル・ソート
aid bid
11 9
11 1
22 5
22 3
33 2
33 4
=# SELECT * FROM tbl ORDER BY aid, bid;
ORDER BYの前半のキーがソート済
(インデックス作成済) でも、テーブル
全体をソートする必要がある
• ソート対象レコード数が多くなり、
ディスクソートに陥りやすい
• LIMIT指定時もテーブル全体の
ソートが必要
~v12
インデックス作成済
16
© 2021 NTT DATA Corporation
インクリメンタル・ソート
v13~
新しいソート方式のインクリメンタル・ソートが利用可能に!
ソート済キーでレコードをグルーピングして、各グループ内でソート
• ソート対象レコード数が少なくなり、ディスクソートに陥りにくい
• LIMIT指定時は一部レコードのみソート
• インクリメンタル・ソートの有効/無効は、
enable_incremental_sortオプションで設定可能
=# SELECT * FROM tbl ORDER BY aid, bid;
aid bid
11 9
11 1
22 5
22 3
33 2
33 4
インデックス作成済
17
© 2021 NTT DATA Corporation
インクリメンタル・ソート
EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100;
Limit (actual time=14548.246..14548.262 rows=100 loops=1)
-> Sort (actual time=14548.245..14548.250 rows=100 loops=1)
Sort Key: aid, bid
Sort Method: top-N heapsort Memory: 29kB
-> Seq Scan on tbl (actual time=0.014..7552.718 rows=100000000 loops=1)
Planning Time: 0.083 ms
Execution Time: 14548.287 ms
ORDER BYとLIMITのクエリの実行プランと実行時間の比較
(1億件のレコードをカラムaid,bidでORDER BYして、LIMITで100件のみ抽出。aidのみにインデックス)
1億件のシーケンシャルスキャンとソートが走り、
実行時間は14秒以上
インクリメンタル・ソートを使わない場合
1
18
© 2021 NTT DATA Corporation
インクリメンタル・ソート
EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100;
Limit (actual time=5442.419..5443.309 rows=100 loops=1)
-> Gather Merge (actual time=5442.419..5443.274 rows=100 loops=1)
Workers Planned: 2
Workers Launched: 2
-> Sort (actual time=5439.059..5439.065 rows=84 loops=3)
Sort Key: aid, bid
Sort Method: top-N heapsort Memory: 29kB
Worker 0: Sort Method: top-N heapsort Memory: 29kB
Worker 1: Sort Method: top-N heapsort Memory: 29kB
-> Parallel Seq Scan on tbl (actual time=0.262..2874.988 rows=33333333 loops=3)
Planning Time: 0.046 ms
Execution Time: 5443.328 ms
インクリメンタル・ソートを使わない場合 (パラレルクエリ利用時)
2
1億件のシーケンシャルスキャンとソートのパラレル実行によ
り、実行時間は5.4秒まで短縮
19
© 2021 NTT DATA Corporation
インクリメンタル・ソート
EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100;
Limit (actual time=0.036..0.079 rows=100 loops=1)
-> Incremental Sort (actual time=0.036..0.068 rows=100 loops=1)
Sort Key: aid, bid
Presorted Key: aid
Full-sort Groups: 3 Sort Method: quicksort Average Memory: 26kB Peak Memory: 26kB
-> Index Scan using tblidx on tbl (actual time=0.015..0.046 rows=101 loops=1)
Planning Time: 0.033 ms
Execution Time: 0.093 ms
インクリメンタル・ソートを使う
3
インクリメンタル・ソートにより、インデックススキャン結果から、
抽出件数に必要な分だけグルーピングしてソートすることで、
実行時間は0.093ミリ秒まで大幅短縮!!
20
© 2021 NTT DATA Corporation
パラレルVACUUM
テーブル
スキャン
インデックス
VACUUM①
インデックス
VACUUM②
テーブル
VACUUM
インデックス
Cleanup①
インデックス
Cleanup②
ファイル
切り詰め
~v12
インデックスを1つずつ処理
するため、インデックス数が
多いとVACUUM時間は
長くなりやすい
21
© 2021 NTT DATA Corporation
パラレルVACUUM
テーブル
スキャン
インデックス
VACUUM①
インデックス
VACUUM②
テーブル
VACUUM
インデックス
Cleanup①
インデックス
Cleanup②
ファイル
切り詰め
テーブル
スキャン
インデックス
VACUUM①
インデックス
VACUUM②
テーブル
VACUUM
インデックス
Cleanup①
インデックス
Cleanup②
ファイル
切り詰め
テーブルに複数のインデックスが定義されている場合、v13から、
VACUUMのインデックス関連の処理をパラレルに実行可能に!
~v12
v13~
v13~
インデックスを1つずつ処理
するため、インデックス数が
多いとVACUUM時間は
長くなりやすい
複数のインデックスをパラレルに処理す
ることで、VACUUM時間を短縮でき
る。リソース消費は増加
22
© 2021 NTT DATA Corporation
パラレルVACUUM
=# VACUUM (PARALLEL n) tbl;
PARALLELオプションで並列数 n を指定可能
オプション未指定時もデフォルトでパラレルVACUUMは実行
パラレルVACUUMはVACUUMコマンドで実行可能
パラレルVACUUMの並列数は以下の最小値
‐VACUUM対象テーブルに定義されているインデックス数
‐PARALLELオプションで指定された値
‐max_parallel_maintenance_workersパラメータの値
23
© 2021 NTT DATA Corporation
パラレルVACUUM
=# VACUUM (PARALLEL 0, VERBOSE on) t;
INFO: vacuuming "public.t"
INFO: scanned index "idx1" to remove 50000000 row versions
DETAIL: CPU: user: 9.09 s, system: 1.41 s, elapsed: 11.44 s
INFO: scanned index "idx2" to remove 50000000 row versions
DETAIL: CPU: user: 9.33 s, system: 1.51 s, elapsed: 11.74 s
INFO: scanned index "idx3" to remove 50000000 row versions
DETAIL: CPU: user: 9.46 s, system: 1.64 s, elapsed: 12.02 s
...
CPU: user: 31.04 s, system: 7.33 s, elapsed: 41.26 s.
パラレルVACUUMの性能改善効果の確認
‐ レコード件数1億のテーブルにインデックスを3つ作成 (各インデックスのサイズは2142MB)
‐ テーブルから5千万件をDELETEして、VACUUMを実行
各インデックスの処理の分だけ
時間がかかる
24
© 2021 NTT DATA Corporation
パラレルVACUUM
=# VACUUM (PARALLEL 2, VERBOSE on) t;
INFO: vacuuming "public.t"
INFO: launched 2 parallel vacuum workers for index vacuuming (planned: 2)
INFO: scanned index "idx1" to remove 50000000 row versions
DETAIL: CPU: user: 9.41 s, system: 1.67 s, elapsed: 11.82 s
INFO: scanned index "idx2" to remove 50000000 row versions by parallel vacuum worker
DETAIL: CPU: user: 9.58 s, system: 2.42 s, elapsed: 12.76 s
INFO: scanned index "idx3" to remove 50000000 row versions by parallel vacuum worker
DETAIL: CPU: user: 9.59 s, system: 2.41 s, elapsed: 12.80 s
...
CPU: user: 12.57 s, system: 4.38 s, elapsed: 20.36 s.
パラレルVACUUMの性能改善効果の確認
‐ レコード件数1億のテーブルにインデックスを3つ作成 (各インデックスのサイズは2142MB)
‐ テーブルから5千万件をDELETEして、VACUUMを実行
インデックスをパラレル処理した分だけ
VACUUMを高速化
メインのバックエンドがインデックスidx1を処理して、
パラレル・ワーカー2つがインデックスidx2とidx3を
処理
25
© 2021 NTT DATA Corporation
パラレルVACUUM
以下では、パラレルVACUUMを利用できない
‐ VACUUM対象のテーブルにインデックスが未定義または1つのみ
‐ インデックスサイズがmin_parallel_index_scan_sizeパラメータの値より小さい
‐ パラレルVACUUM未対応のインデックスのみを利用
(PostgreSQL組み込みのインデックスはすべて対応)
‐ PARALLELオプションまたはmax_parallel_maintenance_workersパラメー
タで並列数0を指定
‐ VACUUM FULL
‐ autovacuum
© 2021 NTT DATA Corporation
アプリケーション開発の利便性向上
27
© 2021 NTT DATA Corporation
FETCH FIRST WITH TIES
問合せ結果からn件返却するクエリ
=# SELECT * FROM tbl ORDER BY id LIMIT n;
=# SELECT * FROM tbl ORDER BY id FETCH FIRST n ROWS ONLY;
FETCH FIRSTは、v8.4からサポートされた、
LIMIT句と同じ結果を実現する標準SQL:2008の構文
どちらもn件返却を指定する構文
28
© 2021 NTT DATA Corporation
FETCH FIRST WITH TIES
v13から、FETCH FIRST WITH TIESがサポートされ、
同じ順位のレコードも返却可能に!
SELECT * FROM tbl
ORDER BY score DESC
FETCH FIRST 3 ROWS ONLY;
name | score
------+-------
XXX | 98
AAA | 90
FFF | 86
(3 rows)
SELECT * FROM tbl
ORDER BY score DESC
FETCH FIRST 3 ROWS WITH TIES;
name | score
------+-------
XXX | 98
AAA | 90
FFF | 86
CCC | 86
ZZZ | 86
(5 rows)
上位n件を返却して、
n番目のレコードと
ORDER BYキーが
同じ値のレコードも返却
v8.4~ v13~
29
© 2021 NTT DATA Corporation
FETCH FIRST WITH TIES
=# SELECT * FROM tbl FETCH FIRST 3 ROWS WITH TIES;
ERROR: WITH TIES cannot be specified without ORDER BY clause
FETCH FIRST WITH TIESはORDER BYの指定が必須
(FETCH FIRST ONLYはORDER BY未指定でも動作可能)
ORDER BY未指定で
WITH TIESを使うと
エラーが発生
30
© 2021 NTT DATA Corporation
Unicode文字列の正規化関数
v13から、normalize関数を使って、Unicode文字列を正規化可能に!
=# SELECT normalize('アイウエオ', NFKC);
正規化対象の文字列 正規化形式
• NFC (デフォルト)
• NFD
• NFKC
• NFKD
31
© 2021 NTT DATA Corporation
Unicode文字列のNFKCでの正規化例
=# SELECT normalize('アイウエオ', NFKC);
normalize
------------
アイウエオ
(1 row)
=# SELECT normalize('AbCdE123', NFKC);
normalize
-----------
AbCdE123
(1 row)
=# SELECT normalize('㌢㋿㊨⑤Ⅷ㈲', NFKC);
normalize
-----------------------
センチ令和右5VIII(有)
(1 row)
半角カタカナを全角カタカナに変換
全角英数字を半角英数字に変換
記号や環境依存文字を変換
32
© 2021 NTT DATA Corporation
正規化関数の応用例
normalize関数により、正規化を考慮した全文検索が可能に!
=# CREATE INDEX testidx ON test
USING gin (normalize(col, NFKC) gin_bigm_ops);
=# SELECT * FROM test
WHERE normalize(col, NFKC)
LIKE likequery(normalize('PostgreSQLバージョン13', NFKC));
col
--------------------------------------------
PostgreSQLバージョン13の新機能
PostgreSQLバージョン13の新機能
PostgreSQLバージョン⑬の新機能
PostgreSQLバージョン13の新機能
(4 rows)
全文検索インデックスの作成時と
検索時にnormalize関数を指定
英数字・カタカナの全角半角や記号の区別なく
全文検索が可能に!
33
© 2021 NTT DATA Corporation
Unicode文字列の正規化の性能
正規化はv14で大幅に性能改善予定!
3.8 3.8
69.2 69.2
0.7 0.7 1.0 1.0
0
20
40
60
80
NFD NFKD NFC NFKC
正
規
化
に
か
か
る
時
間
(
秒
)
v13
v14
日本語を含む19MBの
文字列(※1)の正規化にかかる
時間をv13とv14で比較
(※1) PostgreSQL12日本語ドキュメントの各SGMLファイルをテーブルレコードとして取り込み、そのすべてのレコード(合計サイズ19MB)に対して下記クエリで時間を計測
EXPLAIN ANALYZE SELECT normalize(content, NFKC) FROM doc;
34
© 2021 NTT DATA Corporation
正規化関数利用の制限
=# SHOW server_encoding ;
server_encoding
-----------------
EUC_JP
=# SELECT normalize('アイウエオ', NFKC);
ERROR: Unicode normalization can only be performed if server encoding is UTF8
normalize関数を使えるのは、サーバエンコーディングがUTF-8のときのみ
UTF-8以外のサーバエンコーディングで
normalize関数を使うとエラーが発生
© 2021 NTT DATA Corporation
運用・監視の機能強化
36
© 2021 NTT DATA Corporation
バックアップの進捗確認
v12以前から、--progressオプションを指定することで、
バックアップ取得の進捗状況をクライアント側で確認することは可能
$ pg_basebackup -h 192.168.0.x -D /bkp/data --progress
1339087/2894148 kB (46%), 2/4 tablespaces
バックアップ
DBデータ
37
© 2021 NTT DATA Corporation
バックアップの進捗確認
v13からは、
バックアップ取得の進捗状況をサーバ側でもSQLで確認することが可能に!
$ psql
=# SELECT * FROM pg_stat_progress_basebackup;
バックアップ
DBデータ
38
© 2021 NTT DATA Corporation
pg_stat_progress_basebackup
=# SELECT * FROM pg_stat_progress_basebackup;
-[ RECORD 1 ]:--------+---------------------------
pid | 58783
phase | streaming database files
backup_total | 2963609088
backup_streamed | 1372009984
tablespaces_total | 4
tablespaces_streamed| 3
– バックアップを担当するサーバ側プロセスのPID
– バックアップ取得の現在の処理フェーズ
– バックアップ対象データのトータルサイズ
– 現在転送済み(取得済み)のバックアップのサイズ
– バックアップ対象のテーブルスペースの数
– 現在転送済み(取得済み)のテーブルスペースの数
39
© 2021 NTT DATA Corporation
pg_stat_progress_basebackup
=# SELECT * FROM pg_stat_progress_basebackup;
-[ RECORD 1 ]:--------+---------------------------
pid | 58783
phase | streaming database files
backup_total | 2963609088
backup_streamed | 1372009984
tablespaces_total | 4
tablespaces_streamed| 3
初期準備
サイズ 評価
バックアップ転送
バックアップ開始
WAL転送/アーカイブ
チェックポイント
バックアップ完了
1
2
3
4
5
40
© 2021 NTT DATA Corporation
PostgreSQLのコマンド進捗機能
サポート開始
バージョン
コマンド進捗確認ビュー 進捗確認対象のコマンド
v9.6 pg_stat_progress_vacuum VACUUM, autovacuum
v12
pg_stat_progress_cluster CLUSTER, VACUUM FULL
pg_stat_progress_create_index CREATE INDEX, REINDEX
v13
pg_stat_progress_basebackup pg_basebackup
pg_stat_progress_analyze ANALYZE, autoanalyze
v14 pg_stat_progress_copy COPY TO / FROM
41
© 2021 NTT DATA Corporation
バックアップ・マニフェスト
バックアップをリストアしてDBデータを復旧したいとき、
バックアップがリストアできる正常状態なのか、破損しているのか判断つかない!?
バックアップ
バックアップで困るケース
42
© 2021 NTT DATA Corporation
バックアップ・マニフェスト
v13からは、
バックアップ取得時に、バックアップの妥当性を検証するための情報である
バックアップ・マニフェスト (backup_manifest) を取得可能に!
pg_verifybackup コマンドを使って、バックアップ・マニフェストから
バックアップの妥当性を検証可能に!
バックアップ
DBデータ
1
2
backup_manifest
43
© 2021 NTT DATA Corporation
バックアップ・マニフェスト
$ pg_basebackup -h 192.168.0.x -D /bkp/data
$ ls /bkp/data
PG_VERSION pg_dynshmem pg_replslot pg_tblspc
backup_label pg_hba.conf pg_serial pg_twophase
backup_manifest pg_ident.conf pg_snapshots pg_wal
base pg_logical pg_stat pg_xact
global pg_multixact pg_stat_tmp postgresql.auto.conf
pg_commit_ts pg_notify pg_subtrans postgresql.conf
‐ pg_basebackupはデフォルトでバックアップにbackup_manifestファイルを含める
‐ backup_manifestを取得したくない場合は、--no-manifestオプションを指定
44
© 2021 NTT DATA Corporation
バックアップ・マニフェスト
$ cat /bkp/data/backup_manifest
{ "PostgreSQL-Backup-Manifest-Version": 1,
"Files": [
{ "Path": "AAA", "Size": 224, "Last-Modified": "2020-05-14 15:47:21 GMT",
"Checksum-Algorithm": "CRC32C", "Checksum": "0dc6dc58" },
{ "Path": "BBB", "Size": 800, "Last-Modified": "2020-05-14 15:46:01 GMT",
"Checksum-Algorithm": "CRC32C", "Checksum": "23464490" },
...
バックアップ内のファイルBBBについて
ファイルパスやサイズ、最終変更日時、チェックサム、チェックサム・アルゴリズムを記録
バックアップに含まれるすべてのファイルについて、
妥当性チェックに必要な情報をJSON形式で一覧化
45
© 2021 NTT DATA Corporation
バックアップ・マニフェスト
$ pg_verifybackup /bkp/data
バックアップの妥当性検証に成功
backup successfully verified
バックアップ取得時には存在していたファイルが、現在のバックアップから消えている
pg_verifybackup: error: "PG_VERSION" is present in the manifest but not on disk
バックアップ取得時にはなかったファイルが、現在のバックアップに存在している
pg_verifybackup: error: "hoge" is present on disk but not in the manifest
バックアップ取得時と現在とでファイルのサイズが異なる
pg_verifybackup: error: "PG_VERSION" has size 0 on disk but size 3 in the manifest
バックアップ取得時と現在とでファイルの内容(チェックサム)が異なる
pg_verifybackup: error: checksum mismatch for file "PG_VERSION"
46
© 2021 NTT DATA Corporation
pg_stat_statementsでのプラン生成の回数と時間の収集
=# SELECT * FROM pg_stat_statements;
-[ RECORD 1 ]------+----------------------------------
userid | 10
dbid | 12937
queryid | 3516299150528015379
query | SELECT * FROM test WHERE i = $1
calls | 11
total_time | 1.040068
min_time | 0.03234
max_time | 0.120933
mean_time | 0.09455163636363637
stddev_time | 0.028701163493276168
rows | 11
SQLの実行回数
SQLの実行時間(総時間、最小時間、最
大時間、平均時間、母標準偏差)
pg_stat_statementsは、各SQLの実行情報を収集するエクステンション
47
© 2021 NTT DATA Corporation
pg_stat_statementsでのプラン生成の回数と時間の収集
SQLの構文解析
SQLのプラン生成
SQLの実行
SQL文
SQL実行結果
pg_stat_statementsで取集されるのは
「 SQLの実行」にかかる時間と回数のみ
複雑なSQLで、プラン生成に時間がかかっても、
pg_stat_statementsからはその状況を把握でき
ない
1
2
3
3
~v12
48
© 2021 NTT DATA Corporation
pg_stat_statementsでのプラン生成の回数と時間の収集
「 SQLのプラン生成」にかかる時間と回数も
収集可能に!
プラン生成に時間のかかる複雑なSQLについても、
状況をpg_stat_statementsで把握できる
v13~
SQLの構文解析
SQLのプラン生成
SQLの実行
SQL文
SQL実行結果
1
2
3
2
49
© 2021 NTT DATA Corporation
pg_stat_statementsでのプラン生成の回数と時間の収集
=# SELECT * FROM pg_stat_statements;
userid | 10
dbid | 12924
queryid | 2797858584654623986
query | SELECT * FROM test WHERE i = $1
plans | 11
total_plan_time | 7.356667000000001
min_plan_time | 0.12713
max_plan_time | 5.837887
mean_plan_time | 0.6687879090909091
stddev_plan_time | 1.6347461827809822
calls | 11
total_exec_time | 1.0091139999999998
min_exec_time | 0.03267
max_exec_time | 0.180994
mean_exec_time | 0.09173763636363635
stddev_exec_time | 0.04032989500307034
rows | 7
SQLのプラン生成の情報
プラン生成回数
プラン生成にかかる時間(総時間、最小
時間、最大時間、平均時間、母標準偏
差)
SQL実行時間のカラムについて名前が変
わったため要注意!
50
© 2021 NTT DATA Corporation
pg_stat_statementsでのWAL生成量の収集
=# SELECT * FROM pg_stat_statements;
...
shared_blks_hit | 19
shared_blks_read | 25
shared_blks_dirtied | 0
shared_blks_written | 0
local_blks_hit | 0
local_blks_read | 0
local_blks_dirtied | 0
local_blks_written | 0
temp_blks_read | 0
temp_blks_written | 0
blk_read_time | 0
blk_write_time | 0
wal_records | 20047281
wal_fpw | 148
wal_bytes | 1423133210
v13から、各SQLで出力されるWALに
関する情報も収集可能に!
‐ 出力されたWALレコードの総数
‐ Full Page Writesの総数
‐ WALの総出力量
v13~
51
© 2021 NTT DATA Corporation
さいごに
ぜひ新機能を
お試しいただければ!
!
PostgreSQL13は約170個の新機能や変更点をサポートして、
性能・機能・運用について着実に改善!!
© 2021 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
© 2021 NTT DATA Corporation 53
YouTubeチャンネル “NTT DATA Tech”
技術取り組み、活用情報を中心にお届けします
https://www.youtube.com/NTTDATATech
54
© 2021 NTT DATA Corporation
レプリケーション接続先を手軽に再設定
スタンバイ側で、primary_conninfoパラメータにレプリケーション接続先を設定
$ cat $PGDATA/postgresql.conf
primary_conninfo = 'host=x.x.x.x port=5432 user=repuser'
マスタ スタンバイ
WAL転送
接続要求
x.x.x.x:5432
55
© 2021 NTT DATA Corporation
レプリケーション接続先を手軽に再設定
マスタ
スタンバイ
新マスタ
フェイル
オーバ
WAL転送
接続要求
v12以前では、レプリケーション接続先を再設定するには、スタンバイの再起動が必要
x.x.x.x:5432
y.y.y.y:9999
primary_conninfo = 'host=y.y.y.y port=9999 user=repuser'
再起動
~v12
56
© 2021 NTT DATA Corporation
レプリケーション接続先を手軽に再設定
マスタ
スタンバイ
新マスタ
フェイル
オーバ
WAL転送
接続要求
v13から、設定ファイルの再読み込みで、レプリケーション接続先を再設定可能に!
x.x.x.x:5432
y.y.y.y:9999
primary_conninfo = 'host=y.y.y.y port=9999 user=repuser'
設定ファイル再読み込み
$ pg_ctl reload
v13~
レプリケーション接続先を手軽に再設定
primary_conninfoを空にして設定ファイルを再読み込みすることで、
スタンバイ側でWAL受信を一時停止(walreceiverを停止)可能に!
マスタ スタンバイ
WAL転送
接続要求
x.x.x.x:5432
primary_conninfo = ''
設定ファイル再読み込み
$ pg_ctl reload
一時停止
58
© 2021 NTT DATA Corporation
EXPLAINでのWAL生成量の出力
=# EXPLAIN (ANALYZE on, WAL on, COSTS off)
UPDATE t SET j = j + 1 WHERE i < 500001;
QUERY PLAN
-----------------------------------------------------------------------
Update on t (actual time=728.119..728.119 rows=0 loops=1)
WAL: records=999962 fpi=4431 bytes=88209808
-> Seq Scan on t (actual time=34.696..101.025 rows=500000 loops=1)
Filter: (i < 500001)
Rows Removed by Filter: 500000
Planning Time: 2.963 ms
Execution Time: 728.170 ms
(7 rows)
‐ WALオプションonで、SQLによる
WAL生成に関する情報を出力
‐ WALオプションはデフォルトoff
59
© 2021 NTT DATA Corporation
psqlコマンドプロンプトのデフォルト表示の変更
=# BEGIN;
BEGIN
=# SELECT 1/0;
ERROR: division by zero
=# ROLLBACK;
ROLLBACK
=#
=# BEGIN;
BEGIN
=*# SELECT 1/0;
ERROR: division by zero
=!# ROLLBACK;
=#
‐ トランザクション途中のプロンプトが =# から =*# に変更
‐ エラー発生後からROLLBACKまでのプロンプトが =# から =!# に変更
v13~
~v12
60
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
code
11
22
code
11
22
22
code
11
22
22
22
code
11
22
エントリ 22 の追加 エントリ 22 の追加
重複エントリ排除
HOTが効かない更新では
ユニークインデックスにも重複エントリが追加される
ページ
インデックスの
ページ分割を回避できる
(凡例)
インデックス インデックス インデックス インデックス
非HOTな更新により 非HOTな更新により
ユニーク
ユニーク
ユニーク ユニーク
レコード更新がある場合は、ユニークインデックスでも重複排除onによる
インデックスサイズ削減効果は期待できる!
61
© 2021 NTT DATA Corporation
B-treeインデックスの重複エントリ排除
以下のインデックスでは、deduplicate_items=onでも重複エントリは排除されない
以下のデータ型のカラムに対するインデックス
- 非決定的なCOLLATEを使う文字列型 (text, varchar, char)
- float4, float8, numeric
- jsonb
- コンテナ型 (複合型, 配列, 範囲型など)
INCLUDE句が指定されたインデックス
1
2
62
© 2021 NTT DATA Corporation
インクリメンタル・ソート
EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100;
Limit (actual time=0.006..0.047 rows=100 loops=1)
-> Index Scan using tblidx2 on tbl (actual time=0.005..0.035 rows=100 loops=1)
Planning Time: 0.028 ms
Execution Time: 0.059 ms
ORDER BYのカラムすべてに対して、マルチカラムインデックスを作成
(カラム aid, bid のマルチカラムインデックス)
4
インデックススキャン結果から、必要な件数だけ抽出することで、
実行時間は0.059ミリ秒まで短縮
63
© 2021 NTT DATA Corporation
ディスクベース・ハッシュ集約
=# EXPLAIN (ANALYZE on, COSTS off)
SELECT aid, count(*) FROM tbl GROUP BY aid;
HashAggregate (actual time=204.662..204.782 rows=1000 loops=1)
Group Key: aid
-> Seq Scan on tbl (actual time=0.011..67.773 rows=1000000 loops=1)
Planning Time: 0.058 ms
Execution Time: 204.871 ms (100万件レコードを集約)
ハッシュがメモリに収まるほどレコード数が少ないため、
ハッシュ集約を選択
ハッシュ集約(HashAggregate)は、ハッシュを作りながらレコードを集約
‐ v12以前では、ハッシュはメモリ(work_mem)に収まる必要がある
‐ ハッシュがメモリに収まらないほどレコードが多い場合は、ハッシュ集約は利用できない
(ディスクを使えるグループ集約を利用)
~v12
64
© 2021 NTT DATA Corporation
ディスクベース・ハッシュ集約
=# EXPLAIN (ANALYZE on, COSTS off)
SELECT aid, count(*) FROM tbl GROUP BY aid;
GroupAggregate (actual time=46237.428..62486.980 rows=100000 loops=1)
Group Key: aid
-> Sort (actual time=46237.262..54798.467 rows=100000000 loops=1)
Sort Key: aid
Sort Method: external merge Disk: 1369920kB
-> Seq Scan on tbl (actual time=0.117..9769.288 rows=100000000 loops=1)
Planning Time: 0.095 ms
Execution Time: 62565.331 ms
ハッシュ集約(HashAggregate)は、ハッシュを作りながらレコードを集約
‐ v12以前では、ハッシュはメモリ(work_mem)に収まる必要がある
‐ ハッシュがメモリに収まらないほどレコードが多い場合は、ハッシュ集約は利用できない
(ディスクを使えるグループ集約を利用)
(1億件レコードを集約)
ハッシュがメモリに収まらないほどレコード数が多いため、
グループ集約を選択
~v12
65
© 2021 NTT DATA Corporation
ディスクベース・ハッシュ集約
=# EXPLAIN (ANALYZE on, COSTS off)
SELECT aid, count(*) FROM tbl GROUP BY aid;
HashAggregate (actual time=26209.786..35445.184 rows=100000 loops=1)
Group Key: aid
Batches: 5 Memory Usage: 4145kB Disk Usage: 1657736kB
-> Seq Scan on tbl (actual time=0.066..7818.968 rows=100000000 loops=1)
Planning Time: 0.083 ms
Execution Time: 36156.087 ms (1億件レコードを集約)
ハッシュがメモリに収まらないほどレコード数が多いため、
ディスクを使ったハッシュ集約を選択
v13から、ハッシュ集約でもディスクを利用可能に!
ハッシュがメモリに収まらないほどレコードが多い場合も、ハッシュ集約は利用できる
v13~

More Related Content

What's hot

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を目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

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を目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するかSQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similar to 押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)

【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
griddb
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
griddb
 
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
NTT DATA Technology & Innovation
 
CMD2021 f01 xilinx_20210921_r1.1
CMD2021 f01 xilinx_20210921_r1.1CMD2021 f01 xilinx_20210921_r1.1
CMD2021 f01 xilinx_20210921_r1.1
Yoshihiro Horie
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Masayuki Ozawa
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
Hideo Takagi
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
Naoki (Neo) SATO
 
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
griddb
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
Insight Technology, Inc.
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
Trainocate Japan, Ltd.
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
VirtualTech Japan Inc.
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
NTT DATA OSS Professional Services
 
NetBackup AIR CLI
NetBackup AIR CLINetBackup AIR CLI
NetBackup AIR CLI
vxsejapan
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
junichi anno
 
[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003
Microsoft Tech Summit 2017
 

Similar to 押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料) (20)

【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
 
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
1891件以上のカーネルの不具合修正に貢献した再現用プログラムを自動生成するsyzkallerのテスト自動化技術(NTT Tech Conference ...
 
CMD2021 f01 xilinx_20210921_r1.1
CMD2021 f01 xilinx_20210921_r1.1CMD2021 f01 xilinx_20210921_r1.1
CMD2021 f01 xilinx_20210921_r1.1
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!? ~両者を備えたスケールアウトデータベースGridDB~
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
NetBackup AIR CLI
NetBackup AIR CLINetBackup AIR CLI
NetBackup AIR CLI
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003
 

More from NTT DATA Technology & Innovation

pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
NTT DATA Technology & Innovation
 
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
NTT DATA Technology & Innovation
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_stat_activityの不可解な観測結果の謎 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostGISの落とし穴 (第47回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
TiDBの可用性構成パターン (TiUG Meetup #2 発表資料)
 
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
転生したらQAエンジニアが不在のスクラムチームでスクラムマスターをすることになった件 ~チームでアジャイル品質・アジャイルテスティングに向き合う肝はコミュ...
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 

Recently uploaded

Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
Sony - Neural Network Libraries
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
Toru Tamaki
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
CRI Japan, Inc.
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
chisatotakane
 

Recently uploaded (12)

Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
 

押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)

  • 1. オープンソースカンファレンス2021 Hokkaido © 2021 NTT DATA Corporation 押さえておきたい、PostgreSQL 13 の新機能!! 2021年6月26日 株式会社NTTデータ 藤井 雅雄
  • 2. © 2021 NTT DATA Corporation 2 2 © 2021 NTT DATA Corporation 自己紹介 藤井 雅雄 Database Technical Lead @ NTTデータ データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全文検索モジュール)コミッタ @fujii_masao v13~
  • 3. © 2021 NTT DATA Corporation 3 3 © 2021 NTT DATA Corporation https://codezine.jp/article/detail/14175
  • 4. © 2021 NTT DATA Corporation 4 本講演について 講演資料は、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech 講演資料に掲載の検証結果は、ノートPC上の簡易計測で取得したものです。 環境や条件などによっては、異なる検証結果になる可能性があるためご了承ください。
  • 5. © 2021 NTT DATA Corporation 5 5 © 2021 NTT DATA Corporation PostgreSQL13 2020年9月24日リリースのPostgreSQL最新メジャーバージョン 約170個の新機能や変更点 – 継続的なパフォーマンス改善 – アプリケーション開発の利便性向上 – 運用・監視の機能強化 v13新機能の参考資料 – 篠田の虎の巻「PostgreSQL 13 新機能検証」 – SRA OSS Tech Blog「PostgreSQL 13 検証報告」 https://lets.postgresql.jp/documents/technical/13
  • 6. © 2021 NTT DATA Corporation 6 6 © 2021 NTT DATA Corporation PostgreSQL13 v13の最新マイナーバージョンは v13.3 (2021-05-13リリース) 周辺モジュールやPostgreSQLマネージドサービスもv13対応が進んでいる – PG-REX, pg_hint_plan, pg_statsinfo, pg_bulkload, pg_rman, pg_bigm, pg_repack, PostGIS, etc – Amazon RDS for PostgreSQL, GCP Cloud SQL, Azure Hyperscale (preview) 利用中のPostgreSQLの v13への バージョンアップを検討してもよい時期??
  • 7. © 2021 NTT DATA Corporation 継続的なパフォーマンス改善
  • 8. 8 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 code name 11 AAA 22 BBB 22 CCC 22 DDD 33 EEE code 11 22 22 22 33 テーブル B-treeインデックス ‐ B-treeインデックスでは、 各エントリがテーブルへの ポインタ(TID)を持つ構造 ‐ キー値が重複する場合も、 各エントリがポインタを持つ ~v12
  • 9. 9 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 code name 11 AAA 22 BBB 22 CCC 22 DDD 33 EEE code 11 22 22 22 33 code 11 22 33 v13から、 B-treeインデックスで、重複するエントリをまとめてインデックスサイズを削減可能に! テーブル B-treeインデックス B-treeインデックス キー値が の重複エ ントリ3つについて、 ポインタをリスト化して、 エントリをまとめる ~v12 v13~ v13~ 22
  • 10. 10 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 =# CREATE INDEX testidx ON test (code) WITH (deduplicate_items = off); =# ALTER INDEX testidx SET (deduplicate_items = on); 重複エントリを排除するかは、インデックス毎にdeduplicate_itemsオプションで設定可能 on off : : 重複エントリを排除する (デフォルト) 重複エントリを排除しない (v12以前と同じ動き)
  • 11. 11 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 code 11 22 code 11 22 22 code 11 22 22 22 code 11 22 エントリ 22 の追加 エントリ 22 の追加 重複エントリ排除 ページに収まるため、 重複エントリはそのまま ページに収まらないため、 重複エントリを排除する ページ インデックスの ページ分割を回避できる (凡例) 重複エントリを排除するのは、エントリがページに収まらないとき 重複エントリ排除を遅延させることで、排除処理のオーバーヘッドを回避 CREATE INDEXやREINDEXは、即座に重複エントリを排除する(遅延させない) インデックス インデックス インデックス インデックス
  • 12. 12 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 重複エントリ排除on/offでのインデックスサイズとINSERT性能の比較 ‐ integer型カラムに対してインデックス作成 ‐ レコード1億件について重複割合を0%(重複なし)、20%、40%、 60%、80%、100%(1億件すべてが重複)と変えながらINSERT ‐ INSERT後のインデックスサイズとINSERT時間を計測
  • 13. 13 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 0 500 1000 1500 2000 2500 0 20 40 60 80 100 インデックスサイズ(MB) 重複エントリの割合(%) on off 重複排除onでは、 重複エントリの割合が大きいほど、インデックスサイズの削減効果が大きい
  • 14. 14 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 80 85 90 95 100 105 0 20 40 60 80 100 INSERT時間(秒) 重複エントリの割合(%) on off 重複エントリの割合が小さく、 INSERTオンリーの場合は 重複排除offを検討する価値がある 重複排除onでは、 重複エントリの割合が小さいほど、INSERT時の性能オーバーヘッドが見えやすい
  • 15. 15 © 2021 NTT DATA Corporation インクリメンタル・ソート aid bid 11 9 11 1 22 5 22 3 33 2 33 4 =# SELECT * FROM tbl ORDER BY aid, bid; ORDER BYの前半のキーがソート済 (インデックス作成済) でも、テーブル 全体をソートする必要がある • ソート対象レコード数が多くなり、 ディスクソートに陥りやすい • LIMIT指定時もテーブル全体の ソートが必要 ~v12 インデックス作成済
  • 16. 16 © 2021 NTT DATA Corporation インクリメンタル・ソート v13~ 新しいソート方式のインクリメンタル・ソートが利用可能に! ソート済キーでレコードをグルーピングして、各グループ内でソート • ソート対象レコード数が少なくなり、ディスクソートに陥りにくい • LIMIT指定時は一部レコードのみソート • インクリメンタル・ソートの有効/無効は、 enable_incremental_sortオプションで設定可能 =# SELECT * FROM tbl ORDER BY aid, bid; aid bid 11 9 11 1 22 5 22 3 33 2 33 4 インデックス作成済
  • 17. 17 © 2021 NTT DATA Corporation インクリメンタル・ソート EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100; Limit (actual time=14548.246..14548.262 rows=100 loops=1) -> Sort (actual time=14548.245..14548.250 rows=100 loops=1) Sort Key: aid, bid Sort Method: top-N heapsort Memory: 29kB -> Seq Scan on tbl (actual time=0.014..7552.718 rows=100000000 loops=1) Planning Time: 0.083 ms Execution Time: 14548.287 ms ORDER BYとLIMITのクエリの実行プランと実行時間の比較 (1億件のレコードをカラムaid,bidでORDER BYして、LIMITで100件のみ抽出。aidのみにインデックス) 1億件のシーケンシャルスキャンとソートが走り、 実行時間は14秒以上 インクリメンタル・ソートを使わない場合 1
  • 18. 18 © 2021 NTT DATA Corporation インクリメンタル・ソート EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100; Limit (actual time=5442.419..5443.309 rows=100 loops=1) -> Gather Merge (actual time=5442.419..5443.274 rows=100 loops=1) Workers Planned: 2 Workers Launched: 2 -> Sort (actual time=5439.059..5439.065 rows=84 loops=3) Sort Key: aid, bid Sort Method: top-N heapsort Memory: 29kB Worker 0: Sort Method: top-N heapsort Memory: 29kB Worker 1: Sort Method: top-N heapsort Memory: 29kB -> Parallel Seq Scan on tbl (actual time=0.262..2874.988 rows=33333333 loops=3) Planning Time: 0.046 ms Execution Time: 5443.328 ms インクリメンタル・ソートを使わない場合 (パラレルクエリ利用時) 2 1億件のシーケンシャルスキャンとソートのパラレル実行によ り、実行時間は5.4秒まで短縮
  • 19. 19 © 2021 NTT DATA Corporation インクリメンタル・ソート EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100; Limit (actual time=0.036..0.079 rows=100 loops=1) -> Incremental Sort (actual time=0.036..0.068 rows=100 loops=1) Sort Key: aid, bid Presorted Key: aid Full-sort Groups: 3 Sort Method: quicksort Average Memory: 26kB Peak Memory: 26kB -> Index Scan using tblidx on tbl (actual time=0.015..0.046 rows=101 loops=1) Planning Time: 0.033 ms Execution Time: 0.093 ms インクリメンタル・ソートを使う 3 インクリメンタル・ソートにより、インデックススキャン結果から、 抽出件数に必要な分だけグルーピングしてソートすることで、 実行時間は0.093ミリ秒まで大幅短縮!!
  • 20. 20 © 2021 NTT DATA Corporation パラレルVACUUM テーブル スキャン インデックス VACUUM① インデックス VACUUM② テーブル VACUUM インデックス Cleanup① インデックス Cleanup② ファイル 切り詰め ~v12 インデックスを1つずつ処理 するため、インデックス数が 多いとVACUUM時間は 長くなりやすい
  • 21. 21 © 2021 NTT DATA Corporation パラレルVACUUM テーブル スキャン インデックス VACUUM① インデックス VACUUM② テーブル VACUUM インデックス Cleanup① インデックス Cleanup② ファイル 切り詰め テーブル スキャン インデックス VACUUM① インデックス VACUUM② テーブル VACUUM インデックス Cleanup① インデックス Cleanup② ファイル 切り詰め テーブルに複数のインデックスが定義されている場合、v13から、 VACUUMのインデックス関連の処理をパラレルに実行可能に! ~v12 v13~ v13~ インデックスを1つずつ処理 するため、インデックス数が 多いとVACUUM時間は 長くなりやすい 複数のインデックスをパラレルに処理す ることで、VACUUM時間を短縮でき る。リソース消費は増加
  • 22. 22 © 2021 NTT DATA Corporation パラレルVACUUM =# VACUUM (PARALLEL n) tbl; PARALLELオプションで並列数 n を指定可能 オプション未指定時もデフォルトでパラレルVACUUMは実行 パラレルVACUUMはVACUUMコマンドで実行可能 パラレルVACUUMの並列数は以下の最小値 ‐VACUUM対象テーブルに定義されているインデックス数 ‐PARALLELオプションで指定された値 ‐max_parallel_maintenance_workersパラメータの値
  • 23. 23 © 2021 NTT DATA Corporation パラレルVACUUM =# VACUUM (PARALLEL 0, VERBOSE on) t; INFO: vacuuming "public.t" INFO: scanned index "idx1" to remove 50000000 row versions DETAIL: CPU: user: 9.09 s, system: 1.41 s, elapsed: 11.44 s INFO: scanned index "idx2" to remove 50000000 row versions DETAIL: CPU: user: 9.33 s, system: 1.51 s, elapsed: 11.74 s INFO: scanned index "idx3" to remove 50000000 row versions DETAIL: CPU: user: 9.46 s, system: 1.64 s, elapsed: 12.02 s ... CPU: user: 31.04 s, system: 7.33 s, elapsed: 41.26 s. パラレルVACUUMの性能改善効果の確認 ‐ レコード件数1億のテーブルにインデックスを3つ作成 (各インデックスのサイズは2142MB) ‐ テーブルから5千万件をDELETEして、VACUUMを実行 各インデックスの処理の分だけ 時間がかかる
  • 24. 24 © 2021 NTT DATA Corporation パラレルVACUUM =# VACUUM (PARALLEL 2, VERBOSE on) t; INFO: vacuuming "public.t" INFO: launched 2 parallel vacuum workers for index vacuuming (planned: 2) INFO: scanned index "idx1" to remove 50000000 row versions DETAIL: CPU: user: 9.41 s, system: 1.67 s, elapsed: 11.82 s INFO: scanned index "idx2" to remove 50000000 row versions by parallel vacuum worker DETAIL: CPU: user: 9.58 s, system: 2.42 s, elapsed: 12.76 s INFO: scanned index "idx3" to remove 50000000 row versions by parallel vacuum worker DETAIL: CPU: user: 9.59 s, system: 2.41 s, elapsed: 12.80 s ... CPU: user: 12.57 s, system: 4.38 s, elapsed: 20.36 s. パラレルVACUUMの性能改善効果の確認 ‐ レコード件数1億のテーブルにインデックスを3つ作成 (各インデックスのサイズは2142MB) ‐ テーブルから5千万件をDELETEして、VACUUMを実行 インデックスをパラレル処理した分だけ VACUUMを高速化 メインのバックエンドがインデックスidx1を処理して、 パラレル・ワーカー2つがインデックスidx2とidx3を 処理
  • 25. 25 © 2021 NTT DATA Corporation パラレルVACUUM 以下では、パラレルVACUUMを利用できない ‐ VACUUM対象のテーブルにインデックスが未定義または1つのみ ‐ インデックスサイズがmin_parallel_index_scan_sizeパラメータの値より小さい ‐ パラレルVACUUM未対応のインデックスのみを利用 (PostgreSQL組み込みのインデックスはすべて対応) ‐ PARALLELオプションまたはmax_parallel_maintenance_workersパラメー タで並列数0を指定 ‐ VACUUM FULL ‐ autovacuum
  • 26. © 2021 NTT DATA Corporation アプリケーション開発の利便性向上
  • 27. 27 © 2021 NTT DATA Corporation FETCH FIRST WITH TIES 問合せ結果からn件返却するクエリ =# SELECT * FROM tbl ORDER BY id LIMIT n; =# SELECT * FROM tbl ORDER BY id FETCH FIRST n ROWS ONLY; FETCH FIRSTは、v8.4からサポートされた、 LIMIT句と同じ結果を実現する標準SQL:2008の構文 どちらもn件返却を指定する構文
  • 28. 28 © 2021 NTT DATA Corporation FETCH FIRST WITH TIES v13から、FETCH FIRST WITH TIESがサポートされ、 同じ順位のレコードも返却可能に! SELECT * FROM tbl ORDER BY score DESC FETCH FIRST 3 ROWS ONLY; name | score ------+------- XXX | 98 AAA | 90 FFF | 86 (3 rows) SELECT * FROM tbl ORDER BY score DESC FETCH FIRST 3 ROWS WITH TIES; name | score ------+------- XXX | 98 AAA | 90 FFF | 86 CCC | 86 ZZZ | 86 (5 rows) 上位n件を返却して、 n番目のレコードと ORDER BYキーが 同じ値のレコードも返却 v8.4~ v13~
  • 29. 29 © 2021 NTT DATA Corporation FETCH FIRST WITH TIES =# SELECT * FROM tbl FETCH FIRST 3 ROWS WITH TIES; ERROR: WITH TIES cannot be specified without ORDER BY clause FETCH FIRST WITH TIESはORDER BYの指定が必須 (FETCH FIRST ONLYはORDER BY未指定でも動作可能) ORDER BY未指定で WITH TIESを使うと エラーが発生
  • 30. 30 © 2021 NTT DATA Corporation Unicode文字列の正規化関数 v13から、normalize関数を使って、Unicode文字列を正規化可能に! =# SELECT normalize('アイウエオ', NFKC); 正規化対象の文字列 正規化形式 • NFC (デフォルト) • NFD • NFKC • NFKD
  • 31. 31 © 2021 NTT DATA Corporation Unicode文字列のNFKCでの正規化例 =# SELECT normalize('アイウエオ', NFKC); normalize ------------ アイウエオ (1 row) =# SELECT normalize('AbCdE123', NFKC); normalize ----------- AbCdE123 (1 row) =# SELECT normalize('㌢㋿㊨⑤Ⅷ㈲', NFKC); normalize ----------------------- センチ令和右5VIII(有) (1 row) 半角カタカナを全角カタカナに変換 全角英数字を半角英数字に変換 記号や環境依存文字を変換
  • 32. 32 © 2021 NTT DATA Corporation 正規化関数の応用例 normalize関数により、正規化を考慮した全文検索が可能に! =# CREATE INDEX testidx ON test USING gin (normalize(col, NFKC) gin_bigm_ops); =# SELECT * FROM test WHERE normalize(col, NFKC) LIKE likequery(normalize('PostgreSQLバージョン13', NFKC)); col -------------------------------------------- PostgreSQLバージョン13の新機能 PostgreSQLバージョン13の新機能 PostgreSQLバージョン⑬の新機能 PostgreSQLバージョン13の新機能 (4 rows) 全文検索インデックスの作成時と 検索時にnormalize関数を指定 英数字・カタカナの全角半角や記号の区別なく 全文検索が可能に!
  • 33. 33 © 2021 NTT DATA Corporation Unicode文字列の正規化の性能 正規化はv14で大幅に性能改善予定! 3.8 3.8 69.2 69.2 0.7 0.7 1.0 1.0 0 20 40 60 80 NFD NFKD NFC NFKC 正 規 化 に か か る 時 間 ( 秒 ) v13 v14 日本語を含む19MBの 文字列(※1)の正規化にかかる 時間をv13とv14で比較 (※1) PostgreSQL12日本語ドキュメントの各SGMLファイルをテーブルレコードとして取り込み、そのすべてのレコード(合計サイズ19MB)に対して下記クエリで時間を計測 EXPLAIN ANALYZE SELECT normalize(content, NFKC) FROM doc;
  • 34. 34 © 2021 NTT DATA Corporation 正規化関数利用の制限 =# SHOW server_encoding ; server_encoding ----------------- EUC_JP =# SELECT normalize('アイウエオ', NFKC); ERROR: Unicode normalization can only be performed if server encoding is UTF8 normalize関数を使えるのは、サーバエンコーディングがUTF-8のときのみ UTF-8以外のサーバエンコーディングで normalize関数を使うとエラーが発生
  • 35. © 2021 NTT DATA Corporation 運用・監視の機能強化
  • 36. 36 © 2021 NTT DATA Corporation バックアップの進捗確認 v12以前から、--progressオプションを指定することで、 バックアップ取得の進捗状況をクライアント側で確認することは可能 $ pg_basebackup -h 192.168.0.x -D /bkp/data --progress 1339087/2894148 kB (46%), 2/4 tablespaces バックアップ DBデータ
  • 37. 37 © 2021 NTT DATA Corporation バックアップの進捗確認 v13からは、 バックアップ取得の進捗状況をサーバ側でもSQLで確認することが可能に! $ psql =# SELECT * FROM pg_stat_progress_basebackup; バックアップ DBデータ
  • 38. 38 © 2021 NTT DATA Corporation pg_stat_progress_basebackup =# SELECT * FROM pg_stat_progress_basebackup; -[ RECORD 1 ]:--------+--------------------------- pid | 58783 phase | streaming database files backup_total | 2963609088 backup_streamed | 1372009984 tablespaces_total | 4 tablespaces_streamed| 3 – バックアップを担当するサーバ側プロセスのPID – バックアップ取得の現在の処理フェーズ – バックアップ対象データのトータルサイズ – 現在転送済み(取得済み)のバックアップのサイズ – バックアップ対象のテーブルスペースの数 – 現在転送済み(取得済み)のテーブルスペースの数
  • 39. 39 © 2021 NTT DATA Corporation pg_stat_progress_basebackup =# SELECT * FROM pg_stat_progress_basebackup; -[ RECORD 1 ]:--------+--------------------------- pid | 58783 phase | streaming database files backup_total | 2963609088 backup_streamed | 1372009984 tablespaces_total | 4 tablespaces_streamed| 3 初期準備 サイズ 評価 バックアップ転送 バックアップ開始 WAL転送/アーカイブ チェックポイント バックアップ完了 1 2 3 4 5
  • 40. 40 © 2021 NTT DATA Corporation PostgreSQLのコマンド進捗機能 サポート開始 バージョン コマンド進捗確認ビュー 進捗確認対象のコマンド v9.6 pg_stat_progress_vacuum VACUUM, autovacuum v12 pg_stat_progress_cluster CLUSTER, VACUUM FULL pg_stat_progress_create_index CREATE INDEX, REINDEX v13 pg_stat_progress_basebackup pg_basebackup pg_stat_progress_analyze ANALYZE, autoanalyze v14 pg_stat_progress_copy COPY TO / FROM
  • 41. 41 © 2021 NTT DATA Corporation バックアップ・マニフェスト バックアップをリストアしてDBデータを復旧したいとき、 バックアップがリストアできる正常状態なのか、破損しているのか判断つかない!? バックアップ バックアップで困るケース
  • 42. 42 © 2021 NTT DATA Corporation バックアップ・マニフェスト v13からは、 バックアップ取得時に、バックアップの妥当性を検証するための情報である バックアップ・マニフェスト (backup_manifest) を取得可能に! pg_verifybackup コマンドを使って、バックアップ・マニフェストから バックアップの妥当性を検証可能に! バックアップ DBデータ 1 2 backup_manifest
  • 43. 43 © 2021 NTT DATA Corporation バックアップ・マニフェスト $ pg_basebackup -h 192.168.0.x -D /bkp/data $ ls /bkp/data PG_VERSION pg_dynshmem pg_replslot pg_tblspc backup_label pg_hba.conf pg_serial pg_twophase backup_manifest pg_ident.conf pg_snapshots pg_wal base pg_logical pg_stat pg_xact global pg_multixact pg_stat_tmp postgresql.auto.conf pg_commit_ts pg_notify pg_subtrans postgresql.conf ‐ pg_basebackupはデフォルトでバックアップにbackup_manifestファイルを含める ‐ backup_manifestを取得したくない場合は、--no-manifestオプションを指定
  • 44. 44 © 2021 NTT DATA Corporation バックアップ・マニフェスト $ cat /bkp/data/backup_manifest { "PostgreSQL-Backup-Manifest-Version": 1, "Files": [ { "Path": "AAA", "Size": 224, "Last-Modified": "2020-05-14 15:47:21 GMT", "Checksum-Algorithm": "CRC32C", "Checksum": "0dc6dc58" }, { "Path": "BBB", "Size": 800, "Last-Modified": "2020-05-14 15:46:01 GMT", "Checksum-Algorithm": "CRC32C", "Checksum": "23464490" }, ... バックアップ内のファイルBBBについて ファイルパスやサイズ、最終変更日時、チェックサム、チェックサム・アルゴリズムを記録 バックアップに含まれるすべてのファイルについて、 妥当性チェックに必要な情報をJSON形式で一覧化
  • 45. 45 © 2021 NTT DATA Corporation バックアップ・マニフェスト $ pg_verifybackup /bkp/data バックアップの妥当性検証に成功 backup successfully verified バックアップ取得時には存在していたファイルが、現在のバックアップから消えている pg_verifybackup: error: "PG_VERSION" is present in the manifest but not on disk バックアップ取得時にはなかったファイルが、現在のバックアップに存在している pg_verifybackup: error: "hoge" is present on disk but not in the manifest バックアップ取得時と現在とでファイルのサイズが異なる pg_verifybackup: error: "PG_VERSION" has size 0 on disk but size 3 in the manifest バックアップ取得時と現在とでファイルの内容(チェックサム)が異なる pg_verifybackup: error: checksum mismatch for file "PG_VERSION"
  • 46. 46 © 2021 NTT DATA Corporation pg_stat_statementsでのプラン生成の回数と時間の収集 =# SELECT * FROM pg_stat_statements; -[ RECORD 1 ]------+---------------------------------- userid | 10 dbid | 12937 queryid | 3516299150528015379 query | SELECT * FROM test WHERE i = $1 calls | 11 total_time | 1.040068 min_time | 0.03234 max_time | 0.120933 mean_time | 0.09455163636363637 stddev_time | 0.028701163493276168 rows | 11 SQLの実行回数 SQLの実行時間(総時間、最小時間、最 大時間、平均時間、母標準偏差) pg_stat_statementsは、各SQLの実行情報を収集するエクステンション
  • 47. 47 © 2021 NTT DATA Corporation pg_stat_statementsでのプラン生成の回数と時間の収集 SQLの構文解析 SQLのプラン生成 SQLの実行 SQL文 SQL実行結果 pg_stat_statementsで取集されるのは 「 SQLの実行」にかかる時間と回数のみ 複雑なSQLで、プラン生成に時間がかかっても、 pg_stat_statementsからはその状況を把握でき ない 1 2 3 3 ~v12
  • 48. 48 © 2021 NTT DATA Corporation pg_stat_statementsでのプラン生成の回数と時間の収集 「 SQLのプラン生成」にかかる時間と回数も 収集可能に! プラン生成に時間のかかる複雑なSQLについても、 状況をpg_stat_statementsで把握できる v13~ SQLの構文解析 SQLのプラン生成 SQLの実行 SQL文 SQL実行結果 1 2 3 2
  • 49. 49 © 2021 NTT DATA Corporation pg_stat_statementsでのプラン生成の回数と時間の収集 =# SELECT * FROM pg_stat_statements; userid | 10 dbid | 12924 queryid | 2797858584654623986 query | SELECT * FROM test WHERE i = $1 plans | 11 total_plan_time | 7.356667000000001 min_plan_time | 0.12713 max_plan_time | 5.837887 mean_plan_time | 0.6687879090909091 stddev_plan_time | 1.6347461827809822 calls | 11 total_exec_time | 1.0091139999999998 min_exec_time | 0.03267 max_exec_time | 0.180994 mean_exec_time | 0.09173763636363635 stddev_exec_time | 0.04032989500307034 rows | 7 SQLのプラン生成の情報 プラン生成回数 プラン生成にかかる時間(総時間、最小 時間、最大時間、平均時間、母標準偏 差) SQL実行時間のカラムについて名前が変 わったため要注意!
  • 50. 50 © 2021 NTT DATA Corporation pg_stat_statementsでのWAL生成量の収集 =# SELECT * FROM pg_stat_statements; ... shared_blks_hit | 19 shared_blks_read | 25 shared_blks_dirtied | 0 shared_blks_written | 0 local_blks_hit | 0 local_blks_read | 0 local_blks_dirtied | 0 local_blks_written | 0 temp_blks_read | 0 temp_blks_written | 0 blk_read_time | 0 blk_write_time | 0 wal_records | 20047281 wal_fpw | 148 wal_bytes | 1423133210 v13から、各SQLで出力されるWALに 関する情報も収集可能に! ‐ 出力されたWALレコードの総数 ‐ Full Page Writesの総数 ‐ WALの総出力量 v13~
  • 51. 51 © 2021 NTT DATA Corporation さいごに ぜひ新機能を お試しいただければ! ! PostgreSQL13は約170個の新機能や変更点をサポートして、 性能・機能・運用について着実に改善!!
  • 52. © 2021 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 53. © 2021 NTT DATA Corporation 53 YouTubeチャンネル “NTT DATA Tech” 技術取り組み、活用情報を中心にお届けします https://www.youtube.com/NTTDATATech
  • 54. 54 © 2021 NTT DATA Corporation レプリケーション接続先を手軽に再設定 スタンバイ側で、primary_conninfoパラメータにレプリケーション接続先を設定 $ cat $PGDATA/postgresql.conf primary_conninfo = 'host=x.x.x.x port=5432 user=repuser' マスタ スタンバイ WAL転送 接続要求 x.x.x.x:5432
  • 55. 55 © 2021 NTT DATA Corporation レプリケーション接続先を手軽に再設定 マスタ スタンバイ 新マスタ フェイル オーバ WAL転送 接続要求 v12以前では、レプリケーション接続先を再設定するには、スタンバイの再起動が必要 x.x.x.x:5432 y.y.y.y:9999 primary_conninfo = 'host=y.y.y.y port=9999 user=repuser' 再起動 ~v12
  • 56. 56 © 2021 NTT DATA Corporation レプリケーション接続先を手軽に再設定 マスタ スタンバイ 新マスタ フェイル オーバ WAL転送 接続要求 v13から、設定ファイルの再読み込みで、レプリケーション接続先を再設定可能に! x.x.x.x:5432 y.y.y.y:9999 primary_conninfo = 'host=y.y.y.y port=9999 user=repuser' 設定ファイル再読み込み $ pg_ctl reload v13~
  • 58. 58 © 2021 NTT DATA Corporation EXPLAINでのWAL生成量の出力 =# EXPLAIN (ANALYZE on, WAL on, COSTS off) UPDATE t SET j = j + 1 WHERE i < 500001; QUERY PLAN ----------------------------------------------------------------------- Update on t (actual time=728.119..728.119 rows=0 loops=1) WAL: records=999962 fpi=4431 bytes=88209808 -> Seq Scan on t (actual time=34.696..101.025 rows=500000 loops=1) Filter: (i < 500001) Rows Removed by Filter: 500000 Planning Time: 2.963 ms Execution Time: 728.170 ms (7 rows) ‐ WALオプションonで、SQLによる WAL生成に関する情報を出力 ‐ WALオプションはデフォルトoff
  • 59. 59 © 2021 NTT DATA Corporation psqlコマンドプロンプトのデフォルト表示の変更 =# BEGIN; BEGIN =# SELECT 1/0; ERROR: division by zero =# ROLLBACK; ROLLBACK =# =# BEGIN; BEGIN =*# SELECT 1/0; ERROR: division by zero =!# ROLLBACK; =# ‐ トランザクション途中のプロンプトが =# から =*# に変更 ‐ エラー発生後からROLLBACKまでのプロンプトが =# から =!# に変更 v13~ ~v12
  • 60. 60 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 code 11 22 code 11 22 22 code 11 22 22 22 code 11 22 エントリ 22 の追加 エントリ 22 の追加 重複エントリ排除 HOTが効かない更新では ユニークインデックスにも重複エントリが追加される ページ インデックスの ページ分割を回避できる (凡例) インデックス インデックス インデックス インデックス 非HOTな更新により 非HOTな更新により ユニーク ユニーク ユニーク ユニーク レコード更新がある場合は、ユニークインデックスでも重複排除onによる インデックスサイズ削減効果は期待できる!
  • 61. 61 © 2021 NTT DATA Corporation B-treeインデックスの重複エントリ排除 以下のインデックスでは、deduplicate_items=onでも重複エントリは排除されない 以下のデータ型のカラムに対するインデックス - 非決定的なCOLLATEを使う文字列型 (text, varchar, char) - float4, float8, numeric - jsonb - コンテナ型 (複合型, 配列, 範囲型など) INCLUDE句が指定されたインデックス 1 2
  • 62. 62 © 2021 NTT DATA Corporation インクリメンタル・ソート EXPLAIN (ANALYZE on, COSTS off) SELECT * FROM tbl ORDER BY aid, bid LIMIT 100; Limit (actual time=0.006..0.047 rows=100 loops=1) -> Index Scan using tblidx2 on tbl (actual time=0.005..0.035 rows=100 loops=1) Planning Time: 0.028 ms Execution Time: 0.059 ms ORDER BYのカラムすべてに対して、マルチカラムインデックスを作成 (カラム aid, bid のマルチカラムインデックス) 4 インデックススキャン結果から、必要な件数だけ抽出することで、 実行時間は0.059ミリ秒まで短縮
  • 63. 63 © 2021 NTT DATA Corporation ディスクベース・ハッシュ集約 =# EXPLAIN (ANALYZE on, COSTS off) SELECT aid, count(*) FROM tbl GROUP BY aid; HashAggregate (actual time=204.662..204.782 rows=1000 loops=1) Group Key: aid -> Seq Scan on tbl (actual time=0.011..67.773 rows=1000000 loops=1) Planning Time: 0.058 ms Execution Time: 204.871 ms (100万件レコードを集約) ハッシュがメモリに収まるほどレコード数が少ないため、 ハッシュ集約を選択 ハッシュ集約(HashAggregate)は、ハッシュを作りながらレコードを集約 ‐ v12以前では、ハッシュはメモリ(work_mem)に収まる必要がある ‐ ハッシュがメモリに収まらないほどレコードが多い場合は、ハッシュ集約は利用できない (ディスクを使えるグループ集約を利用) ~v12
  • 64. 64 © 2021 NTT DATA Corporation ディスクベース・ハッシュ集約 =# EXPLAIN (ANALYZE on, COSTS off) SELECT aid, count(*) FROM tbl GROUP BY aid; GroupAggregate (actual time=46237.428..62486.980 rows=100000 loops=1) Group Key: aid -> Sort (actual time=46237.262..54798.467 rows=100000000 loops=1) Sort Key: aid Sort Method: external merge Disk: 1369920kB -> Seq Scan on tbl (actual time=0.117..9769.288 rows=100000000 loops=1) Planning Time: 0.095 ms Execution Time: 62565.331 ms ハッシュ集約(HashAggregate)は、ハッシュを作りながらレコードを集約 ‐ v12以前では、ハッシュはメモリ(work_mem)に収まる必要がある ‐ ハッシュがメモリに収まらないほどレコードが多い場合は、ハッシュ集約は利用できない (ディスクを使えるグループ集約を利用) (1億件レコードを集約) ハッシュがメモリに収まらないほどレコード数が多いため、 グループ集約を選択 ~v12
  • 65. 65 © 2021 NTT DATA Corporation ディスクベース・ハッシュ集約 =# EXPLAIN (ANALYZE on, COSTS off) SELECT aid, count(*) FROM tbl GROUP BY aid; HashAggregate (actual time=26209.786..35445.184 rows=100000 loops=1) Group Key: aid Batches: 5 Memory Usage: 4145kB Disk Usage: 1657736kB -> Seq Scan on tbl (actual time=0.066..7818.968 rows=100000000 loops=1) Planning Time: 0.083 ms Execution Time: 36156.087 ms (1億件レコードを集約) ハッシュがメモリに収まらないほどレコード数が多いため、 ディスクを使ったハッシュ集約を選択 v13から、ハッシュ集約でもディスクを利用可能に! ハッシュがメモリに収まらないほどレコードが多い場合も、ハッシュ集約は利用できる v13~

Editor's Notes

  1. 情報発信については、NTT DATA Tech という YouTubeチャンネルを開設しました。 10月に開催したNTTデータ テクノロジーカンファレンスの模様や 技術トピックの解説映像などを、順次公開していきます。 こちらもあわせてご覧ください。