SlideShare a Scribd company logo
© 2022 NTT DATA Corporation
pg_walinspectについて調べてみた!
2022年 12月 20日 第37回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ 技術開発本部
加藤 健
© 2022 NTT DATA Corporation 2
自己紹介
加藤 健 (かとう けん)
【経歴】
• PostgreSQLの研究開発+サポート
• 社会人2年目
• PostgreSQL歴 1年+
【これまでのPostgreSQLアンカンファレンス】
• 第29回「OSS-DB Gold 合格体験記」
• 第34回「CloudNativePGを動かしてみた!」
© 2022 NTT DATA Corporation 3
本講演について
• 講演資料はNTTデータのSlideShareで公開しています。
• https://www.slideshare.net/nttdata-tech
• 本講演では、PostgreSQLの拡張機能であるpg_walinspectに
ついて説明します。
• pg_walinspectの概要
• pg_walinspectの使い方
• pg_waldumpとの比較
© 2022 NTT DATA Corporation 4
© 2022 NTT DATA Corporation 4
pg_walinspectの概要
© 2022 NTT DATA Corporation 5
pg_walinspectとは
pg_walinspectとは、PostgreSQL 15からcontribモジュールに新しく追加されたPostgreSQLの拡張機能。
バイナリファイルで出力されるWAL(Write Ahead Log)を人間が読めるように翻訳してくれるツール。
0110101001001010010100101010
0101001011000000111010100111
0100110101010100101010100101
0101010010101001010101010010
0000001010100110101111101001
0101010100101100000000101001
0110100110010101011010110101
0110101101110111010010101001
0101001010100101001010101010
0101010101000000111111111101
0101011101100101101001010110
pg_walinspect
テーブル作成しました!
データ追加しました!
インデックス作成しました!
データ更新しました!
テーブル削除しました!
バイナリファイルのWAL 翻訳後のWAL (イメージ)
© 2022 NTT DATA Corporation 6
pg_walinspectの機能
現在、pg_walinspectとして4つの関数が定義されており、これらの関数を使いWALに関する情報を取得する。
デフォルトでは、関数を使えるユーザは、スーパユーザもしくはpg_read_server_filesロールを持ったユーザに限られる。
1. pg_get_wal_records_info(start_lsn, end_lsn)
• start_lsnとend_lsnの間のWALの内容を1行ずつ表示する。
2. pg_get_wal_records_info_till_end_of_wal(start_lsn)
• start_lsnから最後までのWALの内容を1行ずつ表示する。
3. pg_get_wal_stats(start_lsn, end_lsn, per_records)
• start_lsnとend_lsnの間のWALの統計情報を表示する。
4. pg_get_wal_stats_till_end_of_wal(start_lsn, per_records)
• start_lsnから最後までのWALの統計情報を表示する。
WALの内容を表示する
WALの統計情報を表示する
© 2022 NTT DATA Corporation 7
© 2022 NTT DATA Corporation 7
pg_walinspectの使い方
© 2022 NTT DATA Corporation 8
pg_get_wal_records_info()の使い方 (1/3)
実際にどうやってpg_walinspectを使うのか見てみる。
試しにテーブルを作成し、データを追加してみる。
test=# CREATE EXTENSION pg_walinspect;
CREATE EXTENSION
test=# SELECT pg_current_wal_lsn();
pg_current_wal_lsn
--------------------
0/2BB30F0
(1 row)
test=# CREATE TABLE t1(id int);
CREATE TABLE
test=# INSERT INTO t1 VALUES(1);
INSERT 0 1
test=# SELECT pg_current_wal_lsn();
pg_current_wal_lsn
--------------------
0/2BB4260
(1 row)
現在のWALの書き込み位置を返してくれる。
データを追加してみる。
© 2022 NTT DATA Corporation 9
pg_get_wal_records_info()の使い方 (2/3)
pg_get_wal_records_info()に先ほど取得したLSNを指定し、WALの内容を取得する。
テーブル作成とデータ追加で42行のWALレコードが表示された。
test=# SELECT * FROM pg_get_wal_records_info('0/2BB30F0', '0/2BB4260');
start_lsn | end_lsn | prev_lsn | xid | resource_manager | record_type | record_length | main_data_length | fpi_length |
description
| block_ref
-----------+-----------+-----------+-------+------------------+---------------+---------------+------------------+------------+----
--------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------
----------------------------------------------------+-------------------------------------------------
0/2BB30F0 | 0/2BB3128 | 0/2BB2F18 | 0 | Standby | RUNNING_XACTS | 50 | 24 | 0 |
nextXid 10789 latestCompletedXid 10788 oldestRunningXid 107
89
|
...
...
0/2BB4238 | 0/2BB4260 | 0/2BB41F8 | 10790 | Transaction | COMMIT | 34 | 8 | 0 | 2022-12-19 08:38:19.702374+00
|
(42 rows)
先ほど取得したLSNを指定する。
© 2022 NTT DATA Corporation 10
pg_get_wal_records_info()の使い方 (3/3)
データを追加している部分のWALレコードを抜粋して紹介する。
テーブルに初めてデータを追加するので、領域の初期化が行われていることが分かる。
-[ RECORD 41 ]---+-----------------------------------------------------------------------------------------------------------------
--------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
start_lsn | 0/2BB41F8
end_lsn | 0/2BB4238
prev_lsn | 0/2BB4060
xid | 10790
resource_manager | Heap
record_type | INSERT+INIT
record_length | 59
main_data_length | 3
fpi_length | 0
description | off 1 flags 0x00
block_ref | blkref #0: rel 1663/16388/16451 fork main blk 0
-[ RECORD 42 ]---+-----------------------------------------------------------------------------------------------------------------
--------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
start_lsn | 0/2BB4238
end_lsn | 0/2BB4260
prev_lsn | 0/2BB41F8
xid | 10790
resource_manager | Transaction
record_type | COMMIT
record_length | 34
main_data_length | 8
fpi_length | 0
description | 2022-12-19 08:38:19.702374+00
block_ref |
データの追加と領域の初期化が行われている。
ここでコミットされている。
© 2022 NTT DATA Corporation 11
pg_get_wal_records_info()の出力項目
項目 説明
start_lsn レコードの開始LSN
end_lsn レコードの終了LSN
prev_lsn 1つ前のレコードのLSN
xid トランザクションID
resource_manager リソースマネージャ (どのリソースに対する操作か)
record_type レコードタイプ (どんな操作か)
record_length レコードの長さ (メインデータ、Full-Page Imageも含まれている)
main_data_length メインデータの長さ
fpi_length Full-Page Imageの長さ
description WALレコードに関する詳細情報
block_ref ブロックの変更情報
「1663/16388/16433」は「テーブルスペースのOID/データベースのOID/テーブルのOID」
pg_get_wal_records_info()で出力される各項目について調べてみる。
公式ドキュメントに記載がなかったので、ブログ記事やソースコードを参考にした。
参考にしたブログ記事:
• https://debug-life.net/entry/3364
• https://qiita.com/lynx999/items/a65080ec69dc9c4276fe
© 2022 NTT DATA Corporation 12
pg_get_wal_stats()の使い方 (1/3)
同様に、pg_get_wal_stats()に先ほど取得したLSNを指定し、WALの統計情報を取得する。
per_records=trueにすると、各行がリソースマネージャごとではなく、リソースマネージャ/レコードタイプごとに表示される。
test=# SELECT * FROM pg_get_wal_stats('0/2BB30F0', '0/2BB4260', true);
resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage |
combined_size | combined_size_percentage
------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+-
--------------+--------------------------
XLOG/NEXTOID | 1 | 2.380952380952381 | 30 | 0.6855575868372943 | 0 | 0 |
30 | 0.6855575868372943
Transaction/COMMIT | 2 | 4.761904761904762 | 439 | 10.03199268738574 | 0 | 0 |
439 | 10.03199268738574
Storage/CREATE | 1 | 2.380952380952381 | 42 | 0.9597806215722121 | 0 | 0 |
42 | 0.9597806215722121
Standby/LOCK | 1 | 2.380952380952381 | 42 | 0.9597806215722121 | 0 | 0 |
42 | 0.9597806215722121
Standby/RUNNING_XACTS | 1 | 2.380952380952381 | 50 | 1.1425959780621573 | 0 | 0 |
50 | 1.1425959780621573
Heap2/MULTI_INSERT | 5 | 11.904761904761905 | 1265 | 28.907678244972576 | 0 | 0 |
1265 | 28.907678244972576
Heap/INSERT | 3 | 7.142857142857143 | 625 | 14.282449725776965 | 0 | 0 |
625 | 14.282449725776965
Heap/INSERT+INIT | 1 | 2.380952380952381 | 59 | 1.3482632541133455 | 0 | 0 |
59 | 1.3482632541133455
Btree/INSERT_LEAF | 27 | 64.28571428571429 | 1824 | 41.681901279707496 | 0 | 0 |
1824 | 41.681901279707496
(9 rows)
© 2022 NTT DATA Corporation 13
test=# SELECT * FROM pg_get_wal_stats('0/2BCB688', '0/2BCCCC8', true);
resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage |
combined_size | combined_size_percentage
------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+-
--------------+--------------------------
XLOG/NEXTOID | 1 | 1.7857142857142858 | 30 | 0.5402485143165856 | 0 | 0 |
30 | 0.5402485143165856
Transaction/COMMIT | 2 | 3.5714285714285716 | 451 | 8.121735998559338 | 0 | 0 |
451 | 8.121735998559338
Transaction/INVALIDATION | 1 | 1.7857142857142858 | 385 | 6.933189267062849 | 0 | 0 |
385 | 6.933189267062849
Storage/CREATE | 1 | 1.7857142857142858 | 42 | 0.7563479200432199 | 0 | 0 |
42 | 0.7563479200432199
Standby/LOCK | 1 | 1.7857142857142858 | 42 | 0.7563479200432199 | 0 | 0 |
42 | 0.7563479200432199
Standby/RUNNING_XACTS | 1 | 1.7857142857142858 | 50 | 0.9004141905276427 | 0 | 0 |
50 | 0.9004141905276427
Heap2/MULTI_INSERT | 5 | 8.928571428571429 | 1265 | 22.78047902034936 | 0 | 0 |
1265 | 22.78047902034936
Heap2/NEW_CID | 13 | 23.214285714285715 | 780 | 14.046461372231226 | 0 | 0 |
780 | 14.046461372231226
Heap/INSERT | 3 | 5.357142857142857 | 625 | 11.255177381595534 | 0 | 0 |
625 | 11.255177381595534
Heap/INSERT+INIT | 1 | 1.7857142857142858 | 59 | 1.0624887448226183 | 0 | 0 |
59 | 1.0624887448226183
Btree/INSERT_LEAF | 27 | 48.214285714285715 | 1824 | 32.847109670448404 | 0 | 0 |
1824 | 32.847109670448404
(11 rows)
pg_get_wal_stats()の使い方 (2/3)
先ほどはwal_level=replicaだったが、今回はwal_level=logicalで同じ操作を実施する。
Transaction/INVALIDATIONとHeap2/NEW_CIDの行が追加された。
© 2022 NTT DATA Corporation 14
pg_get_wal_stats()の使い方 (3/3)
先ほどはfull_page_write=offだったが、今回はfull_page_write=onで同じ操作を実施する。
fpi_sizeとcombined_sizeが増加した。
test=# SELECT * FROM pg_get_wal_stats('0/2BE4C28', '0/2BE5D60', true);
resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage |
combined_size | combined_size_percentage
------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+-
--------------+--------------------------
XLOG/NEXTOID | 1 | 2.380952380952381 | 30 | 0.7122507122507122 | 0 | 0 |
30 | 0.042459239130434784
Transaction/COMMIT | 2 | 4.761904761904762 | 439 | 10.422602089268755 | 0 | 0 |
439 | 0.6213201992753623
Storage/CREATE | 1 | 2.380952380952381 | 42 | 0.9971509971509972 | 0 | 0 |
42 | 0.059442934782608696
Standby/LOCK | 1 | 2.380952380952381 | 42 | 0.9971509971509972 | 0 | 0 |
42 | 0.059442934782608696
Standby/RUNNING_XACTS | 1 | 2.380952380952381 | 50 | 1.1870845204178537 | 0 | 0 |
50 | 0.07076539855072464
Heap2/MULTI_INSERT | 5 | 11.904761904761905 | 1265 | 30.033238366571698 | 0 | 0 |
1265 | 1.7903645833333333
Heap/INSERT | 3 | 7.142857142857143 | 625 | 14.838556505223172 | 0 | 0 |
625 | 0.884567481884058
Heap/INSERT+INIT | 1 | 2.380952380952381 | 59 | 1.4007597340930675 | 0 | 0 |
59 | 0.08350317028985507
Btree/INSERT_LEAF | 27 | 64.28571428571429 | 1660 | 39.41120607787274 | 66444 | 100 |
68104 | 96.38813405797102
(9 rows)
© 2022 NTT DATA Corporation 15
pg_get_wal_stats()の出力項目
項目 説明
resource_manager/
record_type
リソースマネージャー/
レコードタイプ
count 回数
count_percentage 割合
record_size レコードサイズ (FPIサイズは含まれない)
record_size_percentage レコードサイズの割合
fpi_size FPIサイズ
fpi_size_percentage FPIサイズの割合
combined_size レコードサイズ+FPIサイズ
combined_size_percentage レコードサイズ+FPIサイズの割合
pg_get_wal_stats()で出力される各項目について調べてみる。
公式ドキュメントに記載がなかったので、ブログ記事やソースコードを参考にした。
参考にしたブログ記事:
• https://debug-life.net/entry/3364
• https://qiita.com/lynx999/items/a65080ec69dc9c4276fe
© 2022 NTT DATA Corporation 16
© 2022 NTT DATA Corporation 16
pg_waldumpとの比較
© 2022 NTT DATA Corporation 17
pg_walinspectができた経緯
類似ツールとして以前からpg_waldumpが存在していた。
にも関わらずなぜpg_walinspectができたのだろう?
While working on one of the internal features, we found that it is
a bit difficult to run pg_waldump for a normal user to know WAL
info and stats of a running postgres database instance in the cloud.
内部機能の一つに取り組んでいるとき、クラウド上のPostgreSQLでWALの内容や統計情報を取得す
るのが難しいことが分かった。
• クラウド上だとコマンドラインへのアクセスがないので、pg_waldumpを実行することができない。
• SQLにすることで、クラウド上からでもWALの内容や統計情報を見ることができる。
• クラウド上でのデバッグに役立つ (特にレプリケーション、リカバリなど)。
• ちなみにpg_walinspectという名前はpageinspectという他の拡張機能から取ってきたみたいです。
メーリングリストでの議論
© 2022 NTT DATA Corporation 18
出力項目の比較 (1/4)
test=# SELECT * FROM pg_get_wal_records_info('0/2B459B0', '0/2B45A50');
start_lsn | end_lsn | prev_lsn | xid | resource_manager | record_type | record_length | main_data_length | fpi_length |
description
| block_ref
-----------+-----------+-----------+-------+------------------+---------------+---------------+------------------+------------+-----
-------------------------------------------------------
---+-------------------------------------------------
0/2B459B0 | 0/2B459F0 | 0/2B45978 | 10771 | Heap | INSERT+INIT | 59 | 3 | 0 | off
1 flags 0x00
| blkref #0: rel 1663/16388/16433 fork main blk 0
0/2B459F0 | 0/2B45A18 | 0/2B459B0 | 10771 | Transaction | COMMIT | 34 | 8 | 0 |
2022-12-07 06:31:07.744727+00
|
0/2B45A18 | 0/2B45A50 | 0/2B459F0 | 0 | Standby | RUNNING_XACTS | 50 | 24 | 0 |
nextXid 10772 latestCompletedXid 10771 oldestRunningXid 107
72 |
(3 rows)
$ bin/pg_waldump -s 0/02B459B0 -e 0/02B45A50 data/pg_wal/000000010000000000000002
rmgr: Heap len (rec/tot): 59/ 59, tx: 10771, lsn: 0/02B459B0, prev 0/02B45978, desc: INSERT+INIT off 1 flags 0x00,
blkref #0: rel 1663/16388/16433 blk 0
rmgr: Transaction len (rec/tot): 34/ 34, tx: 10771, lsn: 0/02B459F0, prev 0/02B459B0, desc: COMMIT 2022-12-07
06:31:07.744727 UTC
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/02B45A18, prev 0/02B459F0, desc: RUNNING_XACTS nextXid 10772
latestCompletedXid 10771 oldestRunningXid 10772
pg_walinspect
pg_waldump
実際にpg_walinspectとpg_waldumpを出力して、項目を比較してみる。
ここではWALの内容について比較してみる。
© 2022 NTT DATA Corporation 19
出力項目の比較 (2/4)
pg_walinspect pg_waldump
start_lsn lsn
end_lsn
prev_lsn prev
xid tx
resource_manager rmgr
record_type desc
record_length tot
main_data_length
fpi_length tot - rec
description desc
block_ref blkref
実際に出力してみた結果、ほぼ同じ項目が出力されていることが分かる。
違いとしては、pg_waldumpにはend_lsn、main_data_lengthに相当する項目がない。
© 2022 NTT DATA Corporation 20
出力項目の比較 (3/4)
$ bin/pg_waldump -s 0/02B459B0 -e 0/02B45A50 --stats=record data/pg_wal/000000010000000000000002
WAL statistics between 0/2B459B0 and 0/2B45A50:
Type N (%) Record size (%) FPI size (%) Combined
size (%)
---- - --- ----------- --- -------- --- --------
----- ---
Transaction/COMMIT 1 ( 33.33) 34 ( 23.78) 0 ( 0.00)
34 ( 23.78)
Standby/RUNNING_XACTS 1 ( 33.33) 50 ( 34.97) 0 ( 0.00)
50 ( 34.97)
Heap/INSERT+INIT 1 ( 33.33) 59 ( 41.26) 0 ( 0.00)
59 ( 41.26)
test=# SELECT * FROM pg_get_wal_stats('0/2B459B0', '0/2B45A50', true);
resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage |
combined_size | combined_size_percentage
------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+-
--------------+--------------------------
Transaction/COMMIT | 1 | 33.333333333333336 | 34 | 23.776223776223777 | 0 | 0 |
34 | 23.776223776223777
Standby/RUNNING_XACTS | 1 | 33.333333333333336 | 50 | 34.96503496503497 | 0 | 0 |
50 | 34.96503496503497
Heap/INSERT+INIT | 1 | 33.333333333333336 | 59 | 41.25874125874126 | 0 | 0 |
59 | 41.25874125874126
(3 rows)
pg_walinspect
pg_waldump
実際にpg_walinspectとpg_waldumpを出力して、項目を比較してみる。
ここではWALの統計情報について比較してみる。
© 2022 NTT DATA Corporation 21
出力項目の比較 (4/4)
pg_walinspect pg_waldump
resource manager/record_type Type
count N
count_percentage (%)
record_size Record size
record_size_percentage (%)
fpi_size FPI size
fpi_size_percentage (%)
combined_size Combined Size
combined_size_percentage (%)
実際に出力してみた結果、全く同じ項目が出力されていることが分かる。
© 2022 NTT DATA Corporation 22
まとめ
• pg_walinspectとpg_waldumpはほぼ一緒の項目を出力する。
• 大きな違いとしては、pg_waldumpはコマンドとして実行するが、pg_walinspectはSQLとして実行することができる。
• SQLにすることにより、クラウド上でもWALの内容、統計情報を取得することができ、レプリケーションやリカバリのデバッグ
に役立つ。
• SQLにすることで、pg_waldumpのようにオプションを指定せずとも、一定値以上のレコードを調べることができるように
なった。
• 個人的な感想
• pg_waldump, pg_walinspectともに、公式ドキュメントに各出力項目の説明がなく、調べるのが大変だった。
© 2022 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
© 2022 NTT DATA Corporation 24
参考文献 (1/2)
• コミットログ
• https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2258e76f90bf0254504644
df0515cddc0c0a87f9
• メーリングリストの議論
• https://www.postgresql.org/message-
id/flat/CALj2ACUGUYXsEQdKhEdsBzhGEyF3xggvLdD8C0VT72TNEfOiog%40mail.gmail.com
• 公式ドキュメント(PG15版)
• https://www.postgresql.org/docs/15/pgwalinspect.html
© 2022 NTT DATA Corporation 25
参考文献 (2/2)
• ブログ記事・過去の発表資料
• http://www.dbaglobe.com/2022/07/postgresql-15-new-feature-pgwalinspect.html
• https://www.slideshare.net/masahikosawada98/postgresql-15-254529770
• https://debug-life.net/entry/3364
• https://qiita.com/lynx999/items/a65080ec69dc9c4276fe
• https://www.kimullaa.com/posts/201910271500/
• https://qiita.com/yamaguchi_yy449/items/4ffae4ef334e741edb37#%E5%8F%82%E8%80%
83-pg_walinspect
© 2022 NTT DATA Corporation 26
リソースマネージャ/レコードタイプの一覧
リソースマネージャ レコードタイプ
XLOG CHECKPOINT_SHUTDOWN
CHECKPOINT_ONLINE
NOOP
NEXTOID
SWITCH
BACKUP_END
PARAMETER_CHANGE
RESTORE_POINT
FPW_CHANGE
END_OF_RECOVERY
OVERWRITE_CONTRECORD
FPI
FPI_FOR_HINT
Transaction COMMIT
PREPARE
ABORT
COMMIT_PREPARED
ABORT_PREPATRED
ASSIGNMENT
INVALIDATION
© 2022 NTT DATA Corporation 27
リソースマネージャ/レコードタイプの一覧
Storage CREATE
TRUNCATE
CLOG ZEROPAGE
TRUNCATE
Database CREATE_FILE_COPY
CREATE_WAL_LOG
DROP
Tablespace CREATE
DROP
MultiXact ZERO_OFF_PAGE
ZERO_MEM_PAGE
CREATE_ID
TRUNCATE_ID
RelMap UPDATE
Standby LOCK
RUNNING_XACTS
INVALIDATIONS
© 2022 NTT DATA Corporation 28
リソースマネージャ/レコードタイプの一覧
Heap2 PRUNE
VACUUM
FREEZE_PAGE
VISIBLE
MULTI_INSERT
MULTI_INSERT+INIT
LOCK_UPDATED
NEW_CID
Heap INSERT
INSERT+INIT
DELETE
UPDATE
UPDATE+INIT
HOT_UPDATE
HOT_UPDATE+INIT
TRUNCATE
HEAP_CONFIRM
LOCK
INPLACE
© 2022 NTT DATA Corporation 29
リソースマネージャ/レコードタイプの一覧
Btree INSERT_LEAF
INSERT_UPPER
INSERT_META
SPLIT_L
SPLIT_R
INSERT_POST
DEDUP
VACUUM
DELETE
MARK_PAGE_HALFDEAD
UNLINK_PAGE
UNLINK_PAGE_META
NEWROOT
REUSER_PAGE
META_CLEANUP
© 2022 NTT DATA Corporation 30
リソースマネージャ/レコードタイプの一覧
Hash INIT_META_PAGE
INIT_BITMAP_PAGE
INSERT
ADD_OVFL_PAGE
SPLIT_ALLOCATE_PAGE
SPLIT_PAGE
SPLIT_COMPLETE
MOVE_PAGE_CONTENTS
SQUEEZE_PAGE
DELETE
SPLIT_CLEANUP
UPDATE_META_PAGE
VACUUM_ONE_PAGE
Gin CREATE_PTREE
INSERT
SPLIT
VACUUM_PAGE
VACUUM_DATA_LEAF_PAGE
DELETE_PAGE
UPDATE_META_PAGE
INSERT_LISTPAGE
DELETE_LISTPAGE
© 2022 NTT DATA Corporation 31
リソースマネージャ/レコードタイプの一覧
Gist PAGE_UPDATE
DELETE
PAGE_REUSE
PAGE_SPLIT
PAGE_DELETE
ASSOGM_LSN
Sequence LOG
SPGist ADD_LEAF
MOVE_LEAFS
ADD_NODE
SPLIT_TUPLE
PICKSPLIT
VACUUM_LEAF
VACUUM_ROOT
VACUUM_REDIRECT
© 2022 NTT DATA Corporation 32
リソースマネージャ/レコードタイプの一覧
BRIN CREATE_INDEX
INSERT
INSER+INIT
UPDATE
UPDATE+INIT
SAMEPAGE_UPDATE
REVMAP_EXTEND
DESUMMARIZE
CommitTs ZEROPAGE
TRUNCATE
ReplicationOrigin SET
DROP
Generic Generic
LogicalMessage MESSAGE
参照:
• src/include/access/rmgrlist.h
• src/backend/access/rmgrdesc/*.c

More Related Content

What's hot (20)

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
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
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
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
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
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
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
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
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
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
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
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
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
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
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
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
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
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
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
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 

Similar to pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
Insight Technology, Inc.
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料
kasaharatt
 
PostgreSQL13を検証してみた
PostgreSQL13を検証してみたPostgreSQL13を検証してみた
PostgreSQL13を検証してみた
Naoya Takeuchi
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
 
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7
kingtomo
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
Shigeru Hanada
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Insight Technology, Inc.
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
Toshi Harada
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
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アーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
Toshi Harada
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
Shigeru Hanada
 
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう  by SRA OSS, Inc. 日本支社 高塚遥
[db tech showcase Tokyo 2014] B26: PostgreSQLを拡張してみよう by SRA OSS, Inc. 日本支社 高塚遥
Insight Technology, Inc.
 
OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料OSC沖縄2014_JPUG資料
OSC沖縄2014_JPUG資料
kasaharatt
 
PostgreSQL13を検証してみた
PostgreSQL13を検証してみたPostgreSQL13を検証してみた
PostgreSQL13を検証してみた
Naoya Takeuchi
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
 
Ctb57 with god7
Ctb57 with god7Ctb57 with god7
Ctb57 with god7
kingtomo
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
OSS-DB Gold技術解説セミナー@db tech showcase 東京 2014
Shigeru Hanada
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
kasaharatt
 
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Insight Technology, Inc.
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
Toshi Harada
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
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アーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
Toshi Harada
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
Shigeru Hanada
 

More from NTT DATA Technology & Innovation (20)

つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 

Recently uploaded (6)

第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
Matsushita Laboratory
 
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
ChikakoInami1
 
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
Matsushita Laboratory
 
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
iPride Co., Ltd.
 
20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf
Ayachika Kitazaki
 
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptxSecurity-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
TsukasaKomatsubara
 
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
第39回人工知能学会全国大会の企画セッション「生成AIが切り拓く仕掛学の可能性」の講演資料
Matsushita Laboratory
 
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
【JIMUC】2025新春セミナー_先進IT運用管理分科会_Connpass_配布用.pdf
ChikakoInami1
 
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
ReonHata_LLMを利用した便利の副作用顕在化のためのアイデア発想支援手法の評価_JSAI2025
Matsushita Laboratory
 
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
iPride Co., Ltd.
 
20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf20250525_IoTLT_vol123_kitazaki_v1___.pdf
20250525_IoTLT_vol123_kitazaki_v1___.pdf
Ayachika Kitazaki
 
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptxSecurity-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
Security-JAWS【第37回】 勉強会 2025年5月26日(月) - GitLab.pptx
TsukasaKomatsubara
 

pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2022 NTT DATA Corporation pg_walinspectについて調べてみた! 2022年 12月 20日 第37回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 技術開発本部 加藤 健
  • 2. © 2022 NTT DATA Corporation 2 自己紹介 加藤 健 (かとう けん) 【経歴】 • PostgreSQLの研究開発+サポート • 社会人2年目 • PostgreSQL歴 1年+ 【これまでのPostgreSQLアンカンファレンス】 • 第29回「OSS-DB Gold 合格体験記」 • 第34回「CloudNativePGを動かしてみた!」
  • 3. © 2022 NTT DATA Corporation 3 本講演について • 講演資料はNTTデータのSlideShareで公開しています。 • https://www.slideshare.net/nttdata-tech • 本講演では、PostgreSQLの拡張機能であるpg_walinspectに ついて説明します。 • pg_walinspectの概要 • pg_walinspectの使い方 • pg_waldumpとの比較
  • 4. © 2022 NTT DATA Corporation 4 © 2022 NTT DATA Corporation 4 pg_walinspectの概要
  • 5. © 2022 NTT DATA Corporation 5 pg_walinspectとは pg_walinspectとは、PostgreSQL 15からcontribモジュールに新しく追加されたPostgreSQLの拡張機能。 バイナリファイルで出力されるWAL(Write Ahead Log)を人間が読めるように翻訳してくれるツール。 0110101001001010010100101010 0101001011000000111010100111 0100110101010100101010100101 0101010010101001010101010010 0000001010100110101111101001 0101010100101100000000101001 0110100110010101011010110101 0110101101110111010010101001 0101001010100101001010101010 0101010101000000111111111101 0101011101100101101001010110 pg_walinspect テーブル作成しました! データ追加しました! インデックス作成しました! データ更新しました! テーブル削除しました! バイナリファイルのWAL 翻訳後のWAL (イメージ)
  • 6. © 2022 NTT DATA Corporation 6 pg_walinspectの機能 現在、pg_walinspectとして4つの関数が定義されており、これらの関数を使いWALに関する情報を取得する。 デフォルトでは、関数を使えるユーザは、スーパユーザもしくはpg_read_server_filesロールを持ったユーザに限られる。 1. pg_get_wal_records_info(start_lsn, end_lsn) • start_lsnとend_lsnの間のWALの内容を1行ずつ表示する。 2. pg_get_wal_records_info_till_end_of_wal(start_lsn) • start_lsnから最後までのWALの内容を1行ずつ表示する。 3. pg_get_wal_stats(start_lsn, end_lsn, per_records) • start_lsnとend_lsnの間のWALの統計情報を表示する。 4. pg_get_wal_stats_till_end_of_wal(start_lsn, per_records) • start_lsnから最後までのWALの統計情報を表示する。 WALの内容を表示する WALの統計情報を表示する
  • 7. © 2022 NTT DATA Corporation 7 © 2022 NTT DATA Corporation 7 pg_walinspectの使い方
  • 8. © 2022 NTT DATA Corporation 8 pg_get_wal_records_info()の使い方 (1/3) 実際にどうやってpg_walinspectを使うのか見てみる。 試しにテーブルを作成し、データを追加してみる。 test=# CREATE EXTENSION pg_walinspect; CREATE EXTENSION test=# SELECT pg_current_wal_lsn(); pg_current_wal_lsn -------------------- 0/2BB30F0 (1 row) test=# CREATE TABLE t1(id int); CREATE TABLE test=# INSERT INTO t1 VALUES(1); INSERT 0 1 test=# SELECT pg_current_wal_lsn(); pg_current_wal_lsn -------------------- 0/2BB4260 (1 row) 現在のWALの書き込み位置を返してくれる。 データを追加してみる。
  • 9. © 2022 NTT DATA Corporation 9 pg_get_wal_records_info()の使い方 (2/3) pg_get_wal_records_info()に先ほど取得したLSNを指定し、WALの内容を取得する。 テーブル作成とデータ追加で42行のWALレコードが表示された。 test=# SELECT * FROM pg_get_wal_records_info('0/2BB30F0', '0/2BB4260'); start_lsn | end_lsn | prev_lsn | xid | resource_manager | record_type | record_length | main_data_length | fpi_length | description | block_ref -----------+-----------+-----------+-------+------------------+---------------+---------------+------------------+------------+---- -------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------- ----------------------------------------------------+------------------------------------------------- 0/2BB30F0 | 0/2BB3128 | 0/2BB2F18 | 0 | Standby | RUNNING_XACTS | 50 | 24 | 0 | nextXid 10789 latestCompletedXid 10788 oldestRunningXid 107 89 | ... ... 0/2BB4238 | 0/2BB4260 | 0/2BB41F8 | 10790 | Transaction | COMMIT | 34 | 8 | 0 | 2022-12-19 08:38:19.702374+00 | (42 rows) 先ほど取得したLSNを指定する。
  • 10. © 2022 NTT DATA Corporation 10 pg_get_wal_records_info()の使い方 (3/3) データを追加している部分のWALレコードを抜粋して紹介する。 テーブルに初めてデータを追加するので、領域の初期化が行われていることが分かる。 -[ RECORD 41 ]---+----------------------------------------------------------------------------------------------------------------- -------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------- start_lsn | 0/2BB41F8 end_lsn | 0/2BB4238 prev_lsn | 0/2BB4060 xid | 10790 resource_manager | Heap record_type | INSERT+INIT record_length | 59 main_data_length | 3 fpi_length | 0 description | off 1 flags 0x00 block_ref | blkref #0: rel 1663/16388/16451 fork main blk 0 -[ RECORD 42 ]---+----------------------------------------------------------------------------------------------------------------- -------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------- start_lsn | 0/2BB4238 end_lsn | 0/2BB4260 prev_lsn | 0/2BB41F8 xid | 10790 resource_manager | Transaction record_type | COMMIT record_length | 34 main_data_length | 8 fpi_length | 0 description | 2022-12-19 08:38:19.702374+00 block_ref | データの追加と領域の初期化が行われている。 ここでコミットされている。
  • 11. © 2022 NTT DATA Corporation 11 pg_get_wal_records_info()の出力項目 項目 説明 start_lsn レコードの開始LSN end_lsn レコードの終了LSN prev_lsn 1つ前のレコードのLSN xid トランザクションID resource_manager リソースマネージャ (どのリソースに対する操作か) record_type レコードタイプ (どんな操作か) record_length レコードの長さ (メインデータ、Full-Page Imageも含まれている) main_data_length メインデータの長さ fpi_length Full-Page Imageの長さ description WALレコードに関する詳細情報 block_ref ブロックの変更情報 「1663/16388/16433」は「テーブルスペースのOID/データベースのOID/テーブルのOID」 pg_get_wal_records_info()で出力される各項目について調べてみる。 公式ドキュメントに記載がなかったので、ブログ記事やソースコードを参考にした。 参考にしたブログ記事: • https://debug-life.net/entry/3364 • https://qiita.com/lynx999/items/a65080ec69dc9c4276fe
  • 12. © 2022 NTT DATA Corporation 12 pg_get_wal_stats()の使い方 (1/3) 同様に、pg_get_wal_stats()に先ほど取得したLSNを指定し、WALの統計情報を取得する。 per_records=trueにすると、各行がリソースマネージャごとではなく、リソースマネージャ/レコードタイプごとに表示される。 test=# SELECT * FROM pg_get_wal_stats('0/2BB30F0', '0/2BB4260', true); resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage | combined_size | combined_size_percentage ------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+- --------------+-------------------------- XLOG/NEXTOID | 1 | 2.380952380952381 | 30 | 0.6855575868372943 | 0 | 0 | 30 | 0.6855575868372943 Transaction/COMMIT | 2 | 4.761904761904762 | 439 | 10.03199268738574 | 0 | 0 | 439 | 10.03199268738574 Storage/CREATE | 1 | 2.380952380952381 | 42 | 0.9597806215722121 | 0 | 0 | 42 | 0.9597806215722121 Standby/LOCK | 1 | 2.380952380952381 | 42 | 0.9597806215722121 | 0 | 0 | 42 | 0.9597806215722121 Standby/RUNNING_XACTS | 1 | 2.380952380952381 | 50 | 1.1425959780621573 | 0 | 0 | 50 | 1.1425959780621573 Heap2/MULTI_INSERT | 5 | 11.904761904761905 | 1265 | 28.907678244972576 | 0 | 0 | 1265 | 28.907678244972576 Heap/INSERT | 3 | 7.142857142857143 | 625 | 14.282449725776965 | 0 | 0 | 625 | 14.282449725776965 Heap/INSERT+INIT | 1 | 2.380952380952381 | 59 | 1.3482632541133455 | 0 | 0 | 59 | 1.3482632541133455 Btree/INSERT_LEAF | 27 | 64.28571428571429 | 1824 | 41.681901279707496 | 0 | 0 | 1824 | 41.681901279707496 (9 rows)
  • 13. © 2022 NTT DATA Corporation 13 test=# SELECT * FROM pg_get_wal_stats('0/2BCB688', '0/2BCCCC8', true); resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage | combined_size | combined_size_percentage ------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+- --------------+-------------------------- XLOG/NEXTOID | 1 | 1.7857142857142858 | 30 | 0.5402485143165856 | 0 | 0 | 30 | 0.5402485143165856 Transaction/COMMIT | 2 | 3.5714285714285716 | 451 | 8.121735998559338 | 0 | 0 | 451 | 8.121735998559338 Transaction/INVALIDATION | 1 | 1.7857142857142858 | 385 | 6.933189267062849 | 0 | 0 | 385 | 6.933189267062849 Storage/CREATE | 1 | 1.7857142857142858 | 42 | 0.7563479200432199 | 0 | 0 | 42 | 0.7563479200432199 Standby/LOCK | 1 | 1.7857142857142858 | 42 | 0.7563479200432199 | 0 | 0 | 42 | 0.7563479200432199 Standby/RUNNING_XACTS | 1 | 1.7857142857142858 | 50 | 0.9004141905276427 | 0 | 0 | 50 | 0.9004141905276427 Heap2/MULTI_INSERT | 5 | 8.928571428571429 | 1265 | 22.78047902034936 | 0 | 0 | 1265 | 22.78047902034936 Heap2/NEW_CID | 13 | 23.214285714285715 | 780 | 14.046461372231226 | 0 | 0 | 780 | 14.046461372231226 Heap/INSERT | 3 | 5.357142857142857 | 625 | 11.255177381595534 | 0 | 0 | 625 | 11.255177381595534 Heap/INSERT+INIT | 1 | 1.7857142857142858 | 59 | 1.0624887448226183 | 0 | 0 | 59 | 1.0624887448226183 Btree/INSERT_LEAF | 27 | 48.214285714285715 | 1824 | 32.847109670448404 | 0 | 0 | 1824 | 32.847109670448404 (11 rows) pg_get_wal_stats()の使い方 (2/3) 先ほどはwal_level=replicaだったが、今回はwal_level=logicalで同じ操作を実施する。 Transaction/INVALIDATIONとHeap2/NEW_CIDの行が追加された。
  • 14. © 2022 NTT DATA Corporation 14 pg_get_wal_stats()の使い方 (3/3) 先ほどはfull_page_write=offだったが、今回はfull_page_write=onで同じ操作を実施する。 fpi_sizeとcombined_sizeが増加した。 test=# SELECT * FROM pg_get_wal_stats('0/2BE4C28', '0/2BE5D60', true); resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage | combined_size | combined_size_percentage ------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+- --------------+-------------------------- XLOG/NEXTOID | 1 | 2.380952380952381 | 30 | 0.7122507122507122 | 0 | 0 | 30 | 0.042459239130434784 Transaction/COMMIT | 2 | 4.761904761904762 | 439 | 10.422602089268755 | 0 | 0 | 439 | 0.6213201992753623 Storage/CREATE | 1 | 2.380952380952381 | 42 | 0.9971509971509972 | 0 | 0 | 42 | 0.059442934782608696 Standby/LOCK | 1 | 2.380952380952381 | 42 | 0.9971509971509972 | 0 | 0 | 42 | 0.059442934782608696 Standby/RUNNING_XACTS | 1 | 2.380952380952381 | 50 | 1.1870845204178537 | 0 | 0 | 50 | 0.07076539855072464 Heap2/MULTI_INSERT | 5 | 11.904761904761905 | 1265 | 30.033238366571698 | 0 | 0 | 1265 | 1.7903645833333333 Heap/INSERT | 3 | 7.142857142857143 | 625 | 14.838556505223172 | 0 | 0 | 625 | 0.884567481884058 Heap/INSERT+INIT | 1 | 2.380952380952381 | 59 | 1.4007597340930675 | 0 | 0 | 59 | 0.08350317028985507 Btree/INSERT_LEAF | 27 | 64.28571428571429 | 1660 | 39.41120607787274 | 66444 | 100 | 68104 | 96.38813405797102 (9 rows)
  • 15. © 2022 NTT DATA Corporation 15 pg_get_wal_stats()の出力項目 項目 説明 resource_manager/ record_type リソースマネージャー/ レコードタイプ count 回数 count_percentage 割合 record_size レコードサイズ (FPIサイズは含まれない) record_size_percentage レコードサイズの割合 fpi_size FPIサイズ fpi_size_percentage FPIサイズの割合 combined_size レコードサイズ+FPIサイズ combined_size_percentage レコードサイズ+FPIサイズの割合 pg_get_wal_stats()で出力される各項目について調べてみる。 公式ドキュメントに記載がなかったので、ブログ記事やソースコードを参考にした。 参考にしたブログ記事: • https://debug-life.net/entry/3364 • https://qiita.com/lynx999/items/a65080ec69dc9c4276fe
  • 16. © 2022 NTT DATA Corporation 16 © 2022 NTT DATA Corporation 16 pg_waldumpとの比較
  • 17. © 2022 NTT DATA Corporation 17 pg_walinspectができた経緯 類似ツールとして以前からpg_waldumpが存在していた。 にも関わらずなぜpg_walinspectができたのだろう? While working on one of the internal features, we found that it is a bit difficult to run pg_waldump for a normal user to know WAL info and stats of a running postgres database instance in the cloud. 内部機能の一つに取り組んでいるとき、クラウド上のPostgreSQLでWALの内容や統計情報を取得す るのが難しいことが分かった。 • クラウド上だとコマンドラインへのアクセスがないので、pg_waldumpを実行することができない。 • SQLにすることで、クラウド上からでもWALの内容や統計情報を見ることができる。 • クラウド上でのデバッグに役立つ (特にレプリケーション、リカバリなど)。 • ちなみにpg_walinspectという名前はpageinspectという他の拡張機能から取ってきたみたいです。 メーリングリストでの議論
  • 18. © 2022 NTT DATA Corporation 18 出力項目の比較 (1/4) test=# SELECT * FROM pg_get_wal_records_info('0/2B459B0', '0/2B45A50'); start_lsn | end_lsn | prev_lsn | xid | resource_manager | record_type | record_length | main_data_length | fpi_length | description | block_ref -----------+-----------+-----------+-------+------------------+---------------+---------------+------------------+------------+----- ------------------------------------------------------- ---+------------------------------------------------- 0/2B459B0 | 0/2B459F0 | 0/2B45978 | 10771 | Heap | INSERT+INIT | 59 | 3 | 0 | off 1 flags 0x00 | blkref #0: rel 1663/16388/16433 fork main blk 0 0/2B459F0 | 0/2B45A18 | 0/2B459B0 | 10771 | Transaction | COMMIT | 34 | 8 | 0 | 2022-12-07 06:31:07.744727+00 | 0/2B45A18 | 0/2B45A50 | 0/2B459F0 | 0 | Standby | RUNNING_XACTS | 50 | 24 | 0 | nextXid 10772 latestCompletedXid 10771 oldestRunningXid 107 72 | (3 rows) $ bin/pg_waldump -s 0/02B459B0 -e 0/02B45A50 data/pg_wal/000000010000000000000002 rmgr: Heap len (rec/tot): 59/ 59, tx: 10771, lsn: 0/02B459B0, prev 0/02B45978, desc: INSERT+INIT off 1 flags 0x00, blkref #0: rel 1663/16388/16433 blk 0 rmgr: Transaction len (rec/tot): 34/ 34, tx: 10771, lsn: 0/02B459F0, prev 0/02B459B0, desc: COMMIT 2022-12-07 06:31:07.744727 UTC rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/02B45A18, prev 0/02B459F0, desc: RUNNING_XACTS nextXid 10772 latestCompletedXid 10771 oldestRunningXid 10772 pg_walinspect pg_waldump 実際にpg_walinspectとpg_waldumpを出力して、項目を比較してみる。 ここではWALの内容について比較してみる。
  • 19. © 2022 NTT DATA Corporation 19 出力項目の比較 (2/4) pg_walinspect pg_waldump start_lsn lsn end_lsn prev_lsn prev xid tx resource_manager rmgr record_type desc record_length tot main_data_length fpi_length tot - rec description desc block_ref blkref 実際に出力してみた結果、ほぼ同じ項目が出力されていることが分かる。 違いとしては、pg_waldumpにはend_lsn、main_data_lengthに相当する項目がない。
  • 20. © 2022 NTT DATA Corporation 20 出力項目の比較 (3/4) $ bin/pg_waldump -s 0/02B459B0 -e 0/02B45A50 --stats=record data/pg_wal/000000010000000000000002 WAL statistics between 0/2B459B0 and 0/2B45A50: Type N (%) Record size (%) FPI size (%) Combined size (%) ---- - --- ----------- --- -------- --- -------- ----- --- Transaction/COMMIT 1 ( 33.33) 34 ( 23.78) 0 ( 0.00) 34 ( 23.78) Standby/RUNNING_XACTS 1 ( 33.33) 50 ( 34.97) 0 ( 0.00) 50 ( 34.97) Heap/INSERT+INIT 1 ( 33.33) 59 ( 41.26) 0 ( 0.00) 59 ( 41.26) test=# SELECT * FROM pg_get_wal_stats('0/2B459B0', '0/2B45A50', true); resource_manager/record_type | count | count_percentage | record_size | record_size_percentage | fpi_size | fpi_size_percentage | combined_size | combined_size_percentage ------------------------------+-------+--------------------+-------------+------------------------+----------+---------------------+- --------------+-------------------------- Transaction/COMMIT | 1 | 33.333333333333336 | 34 | 23.776223776223777 | 0 | 0 | 34 | 23.776223776223777 Standby/RUNNING_XACTS | 1 | 33.333333333333336 | 50 | 34.96503496503497 | 0 | 0 | 50 | 34.96503496503497 Heap/INSERT+INIT | 1 | 33.333333333333336 | 59 | 41.25874125874126 | 0 | 0 | 59 | 41.25874125874126 (3 rows) pg_walinspect pg_waldump 実際にpg_walinspectとpg_waldumpを出力して、項目を比較してみる。 ここではWALの統計情報について比較してみる。
  • 21. © 2022 NTT DATA Corporation 21 出力項目の比較 (4/4) pg_walinspect pg_waldump resource manager/record_type Type count N count_percentage (%) record_size Record size record_size_percentage (%) fpi_size FPI size fpi_size_percentage (%) combined_size Combined Size combined_size_percentage (%) 実際に出力してみた結果、全く同じ項目が出力されていることが分かる。
  • 22. © 2022 NTT DATA Corporation 22 まとめ • pg_walinspectとpg_waldumpはほぼ一緒の項目を出力する。 • 大きな違いとしては、pg_waldumpはコマンドとして実行するが、pg_walinspectはSQLとして実行することができる。 • SQLにすることにより、クラウド上でもWALの内容、統計情報を取得することができ、レプリケーションやリカバリのデバッグ に役立つ。 • SQLにすることで、pg_waldumpのようにオプションを指定せずとも、一定値以上のレコードを調べることができるように なった。 • 個人的な感想 • pg_waldump, pg_walinspectともに、公式ドキュメントに各出力項目の説明がなく、調べるのが大変だった。
  • 23. © 2022 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 24. © 2022 NTT DATA Corporation 24 参考文献 (1/2) • コミットログ • https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2258e76f90bf0254504644 df0515cddc0c0a87f9 • メーリングリストの議論 • https://www.postgresql.org/message- id/flat/CALj2ACUGUYXsEQdKhEdsBzhGEyF3xggvLdD8C0VT72TNEfOiog%40mail.gmail.com • 公式ドキュメント(PG15版) • https://www.postgresql.org/docs/15/pgwalinspect.html
  • 25. © 2022 NTT DATA Corporation 25 参考文献 (2/2) • ブログ記事・過去の発表資料 • http://www.dbaglobe.com/2022/07/postgresql-15-new-feature-pgwalinspect.html • https://www.slideshare.net/masahikosawada98/postgresql-15-254529770 • https://debug-life.net/entry/3364 • https://qiita.com/lynx999/items/a65080ec69dc9c4276fe • https://www.kimullaa.com/posts/201910271500/ • https://qiita.com/yamaguchi_yy449/items/4ffae4ef334e741edb37#%E5%8F%82%E8%80% 83-pg_walinspect
  • 26. © 2022 NTT DATA Corporation 26 リソースマネージャ/レコードタイプの一覧 リソースマネージャ レコードタイプ XLOG CHECKPOINT_SHUTDOWN CHECKPOINT_ONLINE NOOP NEXTOID SWITCH BACKUP_END PARAMETER_CHANGE RESTORE_POINT FPW_CHANGE END_OF_RECOVERY OVERWRITE_CONTRECORD FPI FPI_FOR_HINT Transaction COMMIT PREPARE ABORT COMMIT_PREPARED ABORT_PREPATRED ASSIGNMENT INVALIDATION
  • 27. © 2022 NTT DATA Corporation 27 リソースマネージャ/レコードタイプの一覧 Storage CREATE TRUNCATE CLOG ZEROPAGE TRUNCATE Database CREATE_FILE_COPY CREATE_WAL_LOG DROP Tablespace CREATE DROP MultiXact ZERO_OFF_PAGE ZERO_MEM_PAGE CREATE_ID TRUNCATE_ID RelMap UPDATE Standby LOCK RUNNING_XACTS INVALIDATIONS
  • 28. © 2022 NTT DATA Corporation 28 リソースマネージャ/レコードタイプの一覧 Heap2 PRUNE VACUUM FREEZE_PAGE VISIBLE MULTI_INSERT MULTI_INSERT+INIT LOCK_UPDATED NEW_CID Heap INSERT INSERT+INIT DELETE UPDATE UPDATE+INIT HOT_UPDATE HOT_UPDATE+INIT TRUNCATE HEAP_CONFIRM LOCK INPLACE
  • 29. © 2022 NTT DATA Corporation 29 リソースマネージャ/レコードタイプの一覧 Btree INSERT_LEAF INSERT_UPPER INSERT_META SPLIT_L SPLIT_R INSERT_POST DEDUP VACUUM DELETE MARK_PAGE_HALFDEAD UNLINK_PAGE UNLINK_PAGE_META NEWROOT REUSER_PAGE META_CLEANUP
  • 30. © 2022 NTT DATA Corporation 30 リソースマネージャ/レコードタイプの一覧 Hash INIT_META_PAGE INIT_BITMAP_PAGE INSERT ADD_OVFL_PAGE SPLIT_ALLOCATE_PAGE SPLIT_PAGE SPLIT_COMPLETE MOVE_PAGE_CONTENTS SQUEEZE_PAGE DELETE SPLIT_CLEANUP UPDATE_META_PAGE VACUUM_ONE_PAGE Gin CREATE_PTREE INSERT SPLIT VACUUM_PAGE VACUUM_DATA_LEAF_PAGE DELETE_PAGE UPDATE_META_PAGE INSERT_LISTPAGE DELETE_LISTPAGE
  • 31. © 2022 NTT DATA Corporation 31 リソースマネージャ/レコードタイプの一覧 Gist PAGE_UPDATE DELETE PAGE_REUSE PAGE_SPLIT PAGE_DELETE ASSOGM_LSN Sequence LOG SPGist ADD_LEAF MOVE_LEAFS ADD_NODE SPLIT_TUPLE PICKSPLIT VACUUM_LEAF VACUUM_ROOT VACUUM_REDIRECT
  • 32. © 2022 NTT DATA Corporation 32 リソースマネージャ/レコードタイプの一覧 BRIN CREATE_INDEX INSERT INSER+INIT UPDATE UPDATE+INIT SAMEPAGE_UPDATE REVMAP_EXTEND DESUMMARIZE CommitTs ZEROPAGE TRUNCATE ReplicationOrigin SET DROP Generic Generic LogicalMessage MESSAGE 参照: • src/include/access/rmgrlist.h • src/backend/access/rmgrdesc/*.c