SlideShare ist ein Scribd-Unternehmen logo
1 von 32
© 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

Weitere ähnliche Inhalte

Was ist angesagt?

PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回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のロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)Uptime Technologies LLC (JP)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...NTT DATA Technology & Innovation
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSNoriyoshi Shinoda
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Masayuki Ozawa
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...オラクルエンジニア通信
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...Amazon Web Services Japan
 

Was ist angesagt? (20)

PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けない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のロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 
Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎Sql server のバックアップとリストアの基礎
Sql server のバックアップとリストアの基礎
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 

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

PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
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
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Yuki Suga
 
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
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)NTT DATA Technology & Innovation
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013Daichi Egawa
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~griddb
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩Ryo Fujita
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合うDaiyu Hatakeyama
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料kasaharatt
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704HommasSlide
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...Insight Technology, Inc.
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

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

PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
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アンカンファレンス@オンライン 発表資料)
 
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
 
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 発表資料)
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
日本発オープンソース!! スケールアウト型データベース GridDB入門 ~ GitHubからダウンロードして使ってみましょう ~
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩RHEL on Azure、初めの一歩
RHEL on Azure、初めの一歩
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Docker調査20150704
Docker調査20150704Docker調査20150704
Docker調査20150704
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう  by PostgreS...
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
 
10大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con201310大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con2013
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Mehr von 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
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Mehr von NTT DATA Technology & Innovation (20)

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 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Kürzlich hochgeladen

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Kürzlich hochgeladen (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

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