SlideShare uma empresa Scribd logo
1 de 50
© 2021 NTT DATA Corporation
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能
2021年10月22日 Open Source Conference 2021 Online Fall
株式会社NTTデータ 鳥越 淳
© 2021 NTT DATA Corporation 2
自己紹介
鳥越 淳(とりこし あつし)
2008年頃からオープンソースソフトウェアを扱う業務に従事
PostgreSQLは9.6頃から
『PostgreSQL徹底入門 第4版』(翔泳社)8~13章執筆
© 2021 NTT DATA Corporation 3
本講演について
本講演で紹介する機能や仕様は、将来的に変更される可能性があることにご注意ください。
その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
© 2021 NTT DATA Corporation 4
目次
1. モニタリングの概要
2. PostgreSQLの内部情報を用いた性能問題の分析イメージ
3. NTTデータが追加したモニタリング新機能
© 2021 NTT DATA Corporation 5
モニタリングの概要
© 2021 NTT DATA Corporation 6
モニタリングについて
キャパシティプランニング、トラブルの予兆を事前に把握したり、トラブルを迅速に解決するため
には、データベースの処理状況をモニタリングする必要があります
モニタリングの実現には、情報を蓄積・加工・可視化する仕組みも必要になりますが、そもそも
データベースから必要な情報を取得できることが前提となります
例えば、モニタリングのために取得する情報には、下記のようなものがあります
• 異常な処理の発生状況 (例. 長時間化しているクエリがないか)
• パフォーマンスの状況(例. キャッシュヒット率が低下していないか)
• HWリソースの使用状況(例. Diskの空き領域がなくなっていないか)
• データベース内部の処理状況(例. ロック待ちが頻発していないか)
© 2021 NTT DATA Corporation 7
PostgreSQL モニタリング対象情報
情報の取得には、様々な方法があり、それぞれ特徴を活かして解析を実施
① OSのツール
Linuxの場合、top(1)やiostat(1)などのOSのコマンドを活用して、サーバ全体のHWリソース消費状況などを確
認できる
ただし、データベースの挙動の詳細については把握しづらい
② ログ
PostgreSQLのログは、問題の発生箇所・解決のヒントも記載されており、重要な情報源になる
設定からどういう情報を出力させるか詳細な設定が可能
③ PostgreSQLの内部情報
データベースの活動状況やそれらの統計情報をビュー、テーブル、関数経由で把握できる
データベース単位、テーブル単位、プロセス単位、クエリ単位、ロック単位など、様々な粒度で取得ができる
本講演の対象
© 2021 NTT DATA Corporation 8
例えば、稼働統計情報に関するビュー
PostgreSQLは、内部で蓄積したDBの稼働状況を「稼働統計情報」という形でビューとして提供
• backendやautovacuumなど、サーバプロセスの動的情報を集計・統計化、稼働統計情報としてユーザにビュー提供
③様々なビューとして提供
statistics
collector
backend
autovacuum
checkpointer
・・・
① 定期的に稼働情報を送信 ② 統計化して管理
運用者
SQLクエリ
=# SELECT … FROM pg_stat_database
datname | xact_commit | xact_rollback
---------+-------------+--------------
db1 | 100 | 10
db2 | 200 | 20
例. PostgreSQLサーバで
実行されているクエリ取得
稼働統計情報
© 2021 NTT DATA Corporation 9
PostgreSQLの内部情報を用いた
性能問題の分析イメージ
© 2021 NTT DATA Corporation 10
PostgreSQLの内部情報を活用した分析例
「最近データベースが遅くなった」という場合を想定し、原因を特定をする過程のパターンをご
紹介
• トラブルシュートで特によく利用するビューやテーブルを取り上げます
クライアント
クエリの応答がなかなか返ってこない!
スループットが下がった!
© 2021 NTT DATA Corporation 11
バックエンド
問題特定の進め方
問題を特定していくためには、クエリ処理の流れ・アーキテクチャを把握しておくことが大切
• 確認すべきビューを把握するためにも必要になる
クエリ処理の概要(今回必要な範囲のみ記載)
クライアント
SELECT/INSERT/
UPDATE/DELETE
②クエリの実行
(Query Execution)
①実行計画の作成
(Query Planning)
インデックスやテーブルへのアクセスが発生
共有バッファ上にアクセスし、データが存在
しなければ、Disk上のデータを取得する。
排他制御も実施
データファイル
共有バッファ
(Buffer IO)
排他
制御
クライアント
クライアント
© 2021 NTT DATA Corporation 12
(参考)PostgreSQLが提供するモニタリング機能一覧
今回ご紹介するもの以外にもPostgreSQLは多数のモニタリング用のビュー・関数を提供している
コンポーネントごとに内部状態を把握するための方法を一覧化しているサイト(pgstats.dev)もある
https://pgstats.dev/
© 2021 NTT DATA Corporation 13
バックエンド
DB単位で処理状況を確認
“pg_stat_database” ビューで、DB単位(※)で統計情報を確認可能
• まずはマクロな視点(DB単位)から原因を切り分けて、ミクロな視点(クエリ単位など)に詳細化していく
クエリ処理の概要
クライアント
SELECT/INSERT/
UPDATE/DELETE
②クエリの実行
(Query Execution)
①実行計画の作成
(Query Planning)
共有バッファ上にアクセスし、データが存在
しなければ、Disk上のデータを取得する。
排他制御も実施。
データファイル
共有バッファ
(Buffer IO)
排他
制御
クライアント
クライアント
(※) PostgreSQLは、1つのインスタンスに複数のDBを作成できる
© 2021 NTT DATA Corporation 14
pg_stat_databaseの項目
pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される
# コミット/ロールバック数
xact_commit | 4207296
xact_rollback | 57
# 更新・参照件数など
tup_returned | 291951289
tup_fetched | 15978127
tup_inserted | 59411718
tup_updated | 12616512
tup_deleted | 294
# 読み込み時に共有バッファに存在していた/存在していなかったブロック数
blks_hit | 115024816
blks_read | 7071907
# データファイルのブロック読み込み・書き込みに費やされた合計時間(track_io_timingパラメータの有効化が必要)
blk_read_time | 14235
blk_write_time | 214
© 2021 NTT DATA Corporation 15
pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される
# コミット/ロールバック数
xact_commit | 4207296
xact_rollback | 57
# 更新・参照件数など
tup_returned | 291951289
tup_fetched | 15978127
tup_inserted | 59411718
tup_updated | 12616512
tup_deleted | 294
# 読み込み時に共有バッファに存在していた・
存在していなかったブロック数
blks_hit | 115024816
blks_read | 7071907
# データファイルのブロック読み込み・書き込みに費やされた合計時間
blk_read_time | 14235
blk_write_time | 214
pg_stat_databaseで見るべきポイント
共有バッファ上のデータのヒット状況を把握するために利用。
通常時と比較して、ヒット率が低くなっている場合は、 Disk上
のデータにアクセスがより高頻度で発生している可能性がある
⇒ 他のクエリからの大量のINSERTが発生しているなど、共有
バッファ領域が不足している可能性がある
データファイル
共有バッファ
(Buffer IO)
blks_hit
(高速)
blks_read
(低速)
© 2021 NTT DATA Corporation 16
pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される
# コミット/ロールバック数
xact_commit | 4207296
xact_rollback | 57
# 更新・参照件数など
tup_returned | 291951289
tup_fetched | 15978127
tup_inserted | 59411718
tup_updated | 12616512
tup_deleted | 294
# 読み込み時に共有バッファに存在していた/存在していなかったブロック数
blks_hit | 115024816
blks_read | 7071907
# データファイルのブロック読み込み・
書き込みに費やされた合計時間
blk_read_time | 14235
blk_write_time | 214
pg_stat_databaseで見るべきポイント
ブロック情報の読み込み・書き込み時間を知るために利用
(事前に track_io_timing を有効化しておく必要がある)
共有バッファへのキャッシュヒット率が高いにも関わらず、読み込
み時間が増加している場合
⇒ Disk故障などが原因になっている可能性がある
データファイル
共有バッファ
(Buffer IO)
キャッシュヒット率高い
ココが遅い
⇒ Disk故障やDiskへの
多重アクセスなど?
© 2021 NTT DATA Corporation 17
バックエンド
クエリ単位で処理状況を確認
“pg_stat_statements” ビュー(※)で、SQL文単位の統計情報を確認可能
• 特定の種類のクエリに問題ないか確認する
クエリ処理の概要
クライアント
SELECT/INSERT/
UPDATE/DELETE
②クエリの実行
(Query Execution)
①実行計画の作成
(Query Planning)
②では、インデックスやテーブルへのアクセ
スが発生する
共有バッファ上にアクセスし、データが存在
しなければ、Disk上のデータを取得する。
排他制御も実施。
データファイル
共有バッファ
(Buffer IO)
排他
制御
クライアント
クライアント
(※)事前にpg_stat_statementsをインストール・有効化しておく必要がある
© 2021 NTT DATA Corporation 18
pg_stat_statementsの項目
pg_stat_statementsの情報(一部項目を抜粋) ※SQL文単位で統計情報は出力される
# SQL文
query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2
# 実行計画を生成した回数・生成時間
plans | 250451
mean_plan_time | 17049.87321800001
# 本SQL文の実行回数・実行時間
calls | 250451
mean_exec_time | 0.04684529807427434
# 本SQL文で取得した/影響を受けたレコード数
rows | 250451
© 2021 NTT DATA Corporation 19
pg_stat_statementsの項目
pg_stat_statementsの情報(一部項目を抜粋) ※ SQL文単位で統計情報は出力される
# ブロック操作状況
shared_blks_hit | 770183
shared_blks_read | 0
shared_blks_dirtied | 10
shared_blks_written | 22
# ブロック読み込み・書き込みに費やされた合計時間(track_io_timingパラメータの有効化が必要)
blk_read_time | 0
blk_write_time | 0
# 生成したWALレコード
wal_records | 258394
wal_fpi | 0
wal_bytes | 19269318
© 2021 NTT DATA Corporation 20
本資料で深堀りする事象
pg_stat_statementsの情報(一部項目を抜粋) ※クエリ単位で統計情報は出力される
# SQL文
query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2
# 実行計画を生成した回数・生成時間
plans | 250451
total_plan_time | 17049.87321800001
# 本SQL文の実行回数・実行時間
calls | 250451
total_exec_time | 11732.451748000254
# 本SQL文で取得した/影響を受けたレコード数
rows | 250451
特定クエリの実行時間が長くなっているかどうかを把握できる
通常時と比較して、特定のクエリの実行時間だけが長くなっている
場合、本SQL文の実行がボトルネックになっている可能性がある
⇒ 本クエリについて詳細に分析を進める必要があるので、
リアルタイムなクエリの実行状態を確認してみる
© 2021 NTT DATA Corporation 21
バックエンドなどの現在の状況を確認できる pg_stat_activityビュー
“pg_stat_activity” ビューでバックエンドなどPostgreSQLプロセスの現在の状況を確認できる
• DBサーバ側のクエリ処理状況をリアルタイムで確認するために利用する
バックエンド
クエリ処理の概要
クライアント
SELECT/INSERT/
UPDATE/DELETE
②クエリの実行
(Query Execution)
①実行計画の作成
(Query Planning)
②では、インデックスやテーブルへのアクセ
スが発生する
共有バッファ上にアクセスし、データが存在
しなければ、Disk上のデータを取得する。
排他制御も実施。
データファイル
共有バッファ
(Buffer IO)
排他
制御
クライアント
クライアント
© 2021 NTT DATA Corporation 22
pg_stat_activityで見るべきポイント
pg_stat_activityビュー(よく利用する項目を抜粋)
# 基本情報
datname | pgbench
pid | 34195
application_name | pgbench
client_addr |
query | UPDATE pgbench_branches SET bbalance = bbalance …
# 接続・トランザクション・クエリの開始時間
backend_start | 2021-10-10 11:14:40.251874+09
Xact_start | 2021-10-10 11:14:40.249069+09
query_start | 2021-10-10 11:14:40.249069+09
# 待機イベント
wait_event_type | Lock
wait_event | tuple
© 2021 NTT DATA Corporation 23
pg_stat_activityで見るべきポイント
pg_stat_activityビュー(よく利用する項目を抜粋)
# 基本情報
datname | pgbench
pid | 34195
application_name | pgbench
client_addr |
query | UPDATE pgbench_branches SET bbalance = bbalance …
# 接続・トランザクション・クエリの開始時間
backend_start | 2021-12-10 11:14:40.251874+09
xact_start | 2021-12-10 11:14:40.249069+09
query_start | 2021-12-10 11:14:40.249069+09
# 待機イベント
wait_event_type | Lock
wait_event | tuple
待機イベントは、処理を待っている理由を示す。
ボトルネックとなっている可能性がある事象を確認することができる。
※ 注意点として、ビューを参照したタイミングの待機状態しか出力
されない。そのため、複数回実行して、傾向を確認した方がよい
例えば、
・ロックイベントが頻発している場合
⇒ ロック競合が発生している可能性あり。
ロックの詳細を確認する(次ページ)
© 2021 NTT DATA Corporation 24
ロック待ちが多い場合
システムカタログの “pg_locks” でロック情報の詳細を確認できる
• ロックの粒度、ロックを保持しているプロセス、トランザクションなどから、原因の絞り込みが実施できる
バックエンド
クエリ処理の概要
クライアント
SELECT/INSERT/
UPDATE/DELETE
②クエリの実行
(Query Execution)
①実行計画の作成
(Query Planning)
②では、インデックスやテーブルへのアクセ
スが発生する
共有バッファ上にアクセスし、データが存在
しなければ、Disk上のデータを取得する。
排他制御も実施。
データファイル
共有バッファ
(Buffer IO)
クライアント
クライアント
排他
制御
© 2021 NTT DATA Corporation 25
pg_locksの項目
pg_locksではロック情報を参照可能。pg_blocking_pids()関数から指定のPIDをブロックしているプロセス
群が把握可能。
• なお、単体では解析しずらいため、pg_stat_activityやpg_classなどとそれぞれpid, relationでJOINして分析する
ことも多い
pg_locksなどの情報(よく利用する項目を抜粋)
# トランザクションに関する情報
pid | 21060 # ロックを保持(or予定)しているプロセスID
database | 13027 # データベースのOID
relation | 3455 # リレーションのOID
# ロックに関する情報
locktype | relation # ロック対象のオブジェクト
mode | RowExclusiveLock # 獲得(or予定)しているロックモード
waitStart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻
pg_blocking_pids(pg_locks.pid)の情報
pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
© 2021 NTT DATA Corporation 26
pg_locksなどの情報(よく利用する項目を抜粋)
# トランザクションに関する情報
pid | 21060 # ロックを保持(or予定)しているプロセスID
database | 13027 # データベースのOID
relation | 3455 # リレーションのOID
# ロックに関する情報
locktype | relation # ロック対象のオブジェクト
mode | RowExclusiveLock # 獲得(or予定)しているロックモード
waitStart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻
pg_blocking_pids(pg_locks.pid)の情報
pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
pg_locksで見るべきポイント
ロック待ち開始時刻
待ち時間が長いほど影響が大きくなりやすい
© 2021 NTT DATA Corporation 27
pg_locksなどの情報(よく利用する項目を抜粋)
# トランザクションに関する情報
pid | 21060 # ロックを保持(or予定)しているプロセスID
database | 13027 # データベースのOID
relation | 3455 # リレーションのOID
# ロックに関する情報
locktype | relation # ロック対象のオブジェクト
mode | RowExclusiveLock # 獲得(or予定)しているロックモード
waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻
pg_blocking_pids(pg_locks.pid)の情報
pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
pg_locksで見るべきポイント
本サーバプロセスをブロックしているプロセスのPID
© 2021 NTT DATA Corporation 28
pg_locksなどの情報(よく利用する項目を抜粋)
# トランザクションに関する情報
pid | 21060 # ロックを保持(or予定)しているプロセスID
database | 13027 # データベースのOID
relation | 3455 # リレーションのOID
# ロックに関する情報
locktype | relation # ロック対象のオブジェクト
mode | RowExclusiveLock # 獲得(or予定)しているロックモード
waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻
pg_blocking_pids(pg_locks.pid)の情報
pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
pg_locksで見るべきポイント
locktypeはロック対象のオブジェクト。対象オブジェクトによって、想
定される原因が異なる
・locktype=relationの場合
表ロック。競合している場合、ALTER TABLE、CLUSTERなど
が並行して走っている可能性
・locktype=transactionid or tupleの場合
行ロック。競合している場合、同一行に対するUPDATEが並行
して、集中して発生している可能性
・locktype=extendの場合
テーブル拡張のためのロック。同一テーブルにINSERTが集中し
ている可能性
© 2021 NTT DATA Corporation 29
pg_locksなどの情報(よく利用する項目を抜粋)
# トランザクションに関する情報
pid | 21060 # ロックを保持(or予定)しているプロセスID
database | 13027 # データベースのOID
relation | 3455 # リレーションのOID
# ロックに関する情報
locktype | relation # ロック対象のオブジェクト
mode | RowExclusiveLock # 獲得(or予定)しているロックモード
waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻
pg_blocking_pids(pg_locks.pid)の情報
pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
)しているロックモード
pg_locksで見るべきポイント
modeは、同時アクセスを制御するためのロックモード
例えば、RowExclusiveLockの場合は、
テーブルのデータを変更する場合に獲得される
⇒ UPDATE/DELETE/INSERTなどが並行して走っている可能性
(※)ロックモードによって、同時実行の可否が決定する
https://www.postgresql.org/docs/14/explicit-locking.html
© 2021 NTT DATA Corporation 30
ご紹介した分析事例に利用した情報のまとめ
「データベースの応答が遅くなった」場合を想定し、ドリルダウンする形で分析
• いつもこのやり方がよいわけではないが、問題が曖昧な場合や、見落としの確認などに有効
データベースの応答が
最近に遅くなった
pg_stat_database
pg_stat_activity
pg_stat_statements
データ更新が大量に発生してい
ないかなど、原因を追加調査
全体的にブロック読み込み時間が増加
同一テーブルにINSERTが集中して発
生していないかなど、原因を追加調査
(pg_stat_user_tablesなどを活用)
DB単位
クエリ単位
pg_locks
特定のクエリが遅い
⇒ 待機イベントなどを確認
ロック待ちが多い
⇒ ロックの詳細確認
Diskの故障が発生していない
かなど、原因を追加調査
全体的にキャッシュヒット率が低下
状況に応じて、原因を追加調査
その他も事象は多数…
(平常時との変化など)
実行計画の確認
© 2021 NTT DATA Corporation 31
さらなる安定稼働を目指すためのモニタリング
© 2021 NTT DATA Corporation 32
さらなる安定稼働を目指すためのモニタリング
PostgreSQLのモニタリング情報は現在も拡充を続けています
以下、赤枠で囲んだNTTデータが提案・開発したPostgreSQL 14のモニタリング機能をご紹介します
• バックエンドプロセスのメモリ利用状況に関する情報
• DBクラスタ全体のWALに関する統計情報
• pg_locksビューへのwaitstart列追加
• pg_stat_statementsの改善※
※pg_stat_statements_infoビューの新規導入、処理対象行数を出力できるSQLコマンドの追加がされました。
詳細は資料をご参照ください。
https://www.slideshare.net/nttdata-tech/postgresql-14-pg-stat-statements-
improvements-pgunconf23-nttdata
© 2021 NTT DATA Corporation 33
バックエンドプロセスのメモリ利用状況に関する情報
~MemoryContextの確認~
© 2021 NTT DATA Corporation 34
MemoryContextとは
PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理している
• 用途に応じたMemoryContextを作成し、メモリを割り当て(palloc)
• 親のMemoryContextが削除されると、その子孫のMemoryContextも全て削除
⇒ 構造化されているため、メモリ管理がmalloc()よりも容易に
TopMemoryContext
CacheMemoryContext TopPortalContext
TopTransactionContext … …
Context
…
Context
親は1つ
子は複数可
※TopMemoryContextは親なし
Context
…
Context
…
© 2021 NTT DATA Corporation 35
MemoryContextの情報を取得する必要性
特定のContextが肥大化したり、大量のContextが作成されることで、メモリを逼迫することがある
例)
• PostgreSQL内部のキャッシュ(relcacheなど)増加
• 大量のPreparedStatement
• メモリリーク
OSからはPostgreSQLプロセスのメモリが肥大化していることはわかるが、PostgreSQLが何にメモリを利用して
いるかまではわからない
PostgreSQL 13までは、 MemoryContextの情報を得るにはデバッガが必要
商用環境などではデバッガやデバッグシンボルが導入されていないなどの理由で使えないことも
実行例
(gdb) call MemoryContextStats(TopMemoryContext)
© 2021 NTT DATA Corporation 36
V14でできるようになったこと
pg_backend_memory_contextsビュー、pg_log_backend_memory_contexts()関数から、それぞ
れローカルプロセス、指定のバックエンドのMemoryContextを確認可能
Contextを特定する情報があれば、identに出力される
例) PREPARE文を実行した場合
階層の深さはlevelで表現
© 2021 NTT DATA Corporation 37
DBクラスタ全体のWALに関する統計情報
© 2021 NTT DATA Corporation 38
WALモニタリングの必要性
• WAL(Write Ahead Logging)は、 トランザクションの内容をテーブルなどデータファイルに書き込む前に、
ログとして記録しておく手法
• クラッシュリカバリ、オンライン物理バックアップ、レプリケーションでも利用される重要な仕組み
• ディスクへの永続化をすることもあり、更新が多いワークロードなどの場合、WAL書き出しがDisk I/Oのボト
ルネックになることも
© 2021 NTT DATA Corporation 39
V13で確認できるWALの統計情報
PostgreSQL V13では、以下のWALに関するメトリクスが取得可能に
• pg_stat_statements, EXPLAN: クエリ単位で生成したWALレコード数など
• Autovacuum: バキューム時に生成したWALレコード数など
pg_stat_statementsビュー
postgres=# SELECT query, wal_records, wal_fpi, wal_bytes FROM pg_stat_statements;
query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2
wal_records | 206328 # 本クエリによって、生成された合計WAL数
wal_fpi | 3807 # 本クエリによって、生成された合計full page images数(※)
wal_bytes | 43960467 # 本クエリによって、生成された合計WALバイト数
(※) 通常書き出されるWALと比較して、サイズが大きく、Disk書き込みの負荷が高いWALレコード。 鈴木啓修さんのslideshare
「PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)」が詳しいので、ご興味のある方はご参考ください。
© 2021 NTT DATA Corporation 40
V14でできるようになったこと
DBクラスタ全体のWALに関する活動をモニタリングするpg_stat_walビューを導入
V13のpg_stat_statementsなどでモニタリング可能になった項目のDBクラスタ全体の情報に加え、WAL
バッファが溢れてDiskへ書き込みが発生した回数をカウントするwal_buffers_fullを導入。
WALバッファが溢れてDisk書き込みが発生すると性能は劣化するが、WALバッファが溢れた回数を取得する方
法がなかった
頻繁に発生してる場合、WALバッファのサイズ(パラメータwal_buffersで設定可能)を増やすなどのチューニン
グにつなげることができる
pg_stat_walビュー
wal_records | 36960 # DBクラスタ全体で、生成された合計WAL数
wal_fpi | 2785 # DBクラスタ全体で、生成された合計full page images数
wal_bytes | 128434288 # DBクラスタ全体で、合計WALバイト数
wal_buffers_full | 2826 # WALバッファが一杯でDiskへの書き込みが発生した回数
© 2021 NTT DATA Corporation 41
ロック取得待ち時間の確認
~pg_locksビューへのwaitstart列追加~
© 2021 NTT DATA Corporation 42
V13までのpg_locks
• pg_locksビューは、PostgreSQLプロセスによって取得されているロックの情報を表示するビュー
• PostgreSQL 13以前では、ロック待ちを開始した時刻や、ロック待ちしている時間を取得する方法は提
供されていなかった
• pg_stat_activityとpidで結合してquery_startやstate_changeで時刻を取得できるが、これら
はクエリの開始時刻や状態が変化した時刻
…
© 2021 NTT DATA Corporation 43
V14のpg_locks
• ロック待ちを開始した時刻を表示するwaitstart列を追加
• 現在時刻との差分を見れば、ロック待ち時間が取得可能
…
=# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _
=# SELECT relation, pid, mode, granted, now() – waitstart AS durtation FROM pg_locks; _
© 2021 NTT DATA Corporation 44
V14のpg_locks
• ロック待ちを開始した時刻を表示するwaitstart列を追加
• ロックを保持している場合はNULL
• 現在時刻との差分を見れば、ロック待ち時間が取得可能
…
=# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _
=# SELECT relation, pid, mode, granted, now() – waitstart AS durtation FROM pg_locks; _
© 2021 NTT DATA Corporation 45
V14のpg_locksの注意点
• タイミングによってはロック取得待ち状態(grantedがfalse)なのに、waitstartがNULLになるケースがある
点に一応注意
• これは、オーバーヘッドを増やさないよう、waitstart更新時にロック取得しないようにしたために発生
• この状況はごく短時間しか発生しない、かつwaitstartが必要になるのは長時間ロックが解放されな
い場合なので、実質的な影響はないはず
…
© 2021 NTT DATA Corporation 46
まとめ
• モニタリングは、システムが正常に動作しているか把握したり、トラブルの原因を把握するた
めに必要
• データベースのモニタリングでは、稼働統計情報などデータベース内部の状態を観察できる
手段がある
• 基本的なモニタリング情報は抑えておくとよい
pg_stat_database, pg_stat_statements, pg_stat_activity, pg_locksなど
• PostgreSQLのモニタリング情報は現在も進化し続けている
• PostgreSQLに追加したいモニタリング項目などがあれば検討したいので、教えてくださ
い!
© 2021 NTT DATA Corporation 47
We‘re Hiring!(1/2)
https://nttdata.jposting.net/u/job.phtml?job_code=666
一緒に働く仲間を募集しています!
データ活用プロフェッショナル
(OSSエンジニア)<384>
こんな方を募集しています!
 NTTデータが関わる様々な案件で技術力を発揮し社会
に貢献したい方
 自らの専門性も高めながら専門家集団で働きたい方
 OSSのコミュニティ活動で世界と繋がっていきたい方、etc.
若手が中心の
活発な職場です
https://nttdata.jposting.net/u/job.phtml?job_code=755
※2021年6月現在
データ活用プロフェッショナル
(IoT基盤エンジニア)<497>
※上記写真2枚はコロナ禍前に撮影したものです。
© 2021 NTT DATA Corporation 48
We‘re Hiring!(2/2)
https://nttdata.jposting.net/u/job.phtml?job_code=766
データ活用プロフェッショナル
(DataOpsエンジニア)<498>
JDK/JVMの高難度技術課題の解決と技術開発を担う
Javaスペシャリスト<368>
https://nttdata.jposting.net/u/job.phtml?job_code=645
データベースミドルウェア
(PostgreSQL)の高度化・機能
拡充を実現する開発者<394>
https://nttdata.jposting.net/u/job.phtml?job_code=676
※2021年6月現在
一緒に働く仲間を募集しています!
© 2021 NTT DATA Corporation 49
YouTubeチャンネル “NTT DATA Tech”
技 術 取り組 み、活 用 情 報 を中心にお 届けします
https://www.youtube.com/NTTDATATech
© 2021 NTT DATA Corporation

Mais conteúdo relacionado

Mais procurados

今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回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 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
 
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レプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
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
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回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
 

Mais procurados (20)

今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
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バージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回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 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
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 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
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 発表資料)
 

Semelhante a PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online Fall 発表資料)

pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...yoshimotot
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)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
 
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 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
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)Satoshi Yamada
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例Tetsutaro Watanabe
 
MySQL Technology Cafe #12 待望の!MDS HA先行レビュー
MySQL Technology Cafe #12 待望の!MDS HA先行レビューMySQL Technology Cafe #12 待望の!MDS HA先行レビュー
MySQL Technology Cafe #12 待望の!MDS HA先行レビューオラクルエンジニア通信
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)NTT DATA Technology & Innovation
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイントMasayuki Ozawa
 

Semelhante a PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online Fall 発表資料) (20)

pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料)
 
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)
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回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アンカンファレンス@オンライン 発表資料)
 
OSSを活用したIaCの実現
OSSを活用したIaCの実現OSSを活用したIaCの実現
OSSを活用したIaCの実現
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
 
MySQL Technology Cafe #12 待望の!MDS HA先行レビュー
MySQL Technology Cafe #12 待望の!MDS HA先行レビューMySQL Technology Cafe #12 待望の!MDS HA先行レビュー
MySQL Technology Cafe #12 待望の!MDS HA先行レビュー
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
 

Mais de 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
 

Mais de 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アンカンファレンス@オンライン 発表資料)
 

PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online Fall 発表資料)

  • 1. © 2021 NTT DATA Corporation PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能 2021年10月22日 Open Source Conference 2021 Online Fall 株式会社NTTデータ 鳥越 淳
  • 2. © 2021 NTT DATA Corporation 2 自己紹介 鳥越 淳(とりこし あつし) 2008年頃からオープンソースソフトウェアを扱う業務に従事 PostgreSQLは9.6頃から 『PostgreSQL徹底入門 第4版』(翔泳社)8~13章執筆
  • 3. © 2021 NTT DATA Corporation 3 本講演について 本講演で紹介する機能や仕様は、将来的に変更される可能性があることにご注意ください。 その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 4. © 2021 NTT DATA Corporation 4 目次 1. モニタリングの概要 2. PostgreSQLの内部情報を用いた性能問題の分析イメージ 3. NTTデータが追加したモニタリング新機能
  • 5. © 2021 NTT DATA Corporation 5 モニタリングの概要
  • 6. © 2021 NTT DATA Corporation 6 モニタリングについて キャパシティプランニング、トラブルの予兆を事前に把握したり、トラブルを迅速に解決するため には、データベースの処理状況をモニタリングする必要があります モニタリングの実現には、情報を蓄積・加工・可視化する仕組みも必要になりますが、そもそも データベースから必要な情報を取得できることが前提となります 例えば、モニタリングのために取得する情報には、下記のようなものがあります • 異常な処理の発生状況 (例. 長時間化しているクエリがないか) • パフォーマンスの状況(例. キャッシュヒット率が低下していないか) • HWリソースの使用状況(例. Diskの空き領域がなくなっていないか) • データベース内部の処理状況(例. ロック待ちが頻発していないか)
  • 7. © 2021 NTT DATA Corporation 7 PostgreSQL モニタリング対象情報 情報の取得には、様々な方法があり、それぞれ特徴を活かして解析を実施 ① OSのツール Linuxの場合、top(1)やiostat(1)などのOSのコマンドを活用して、サーバ全体のHWリソース消費状況などを確 認できる ただし、データベースの挙動の詳細については把握しづらい ② ログ PostgreSQLのログは、問題の発生箇所・解決のヒントも記載されており、重要な情報源になる 設定からどういう情報を出力させるか詳細な設定が可能 ③ PostgreSQLの内部情報 データベースの活動状況やそれらの統計情報をビュー、テーブル、関数経由で把握できる データベース単位、テーブル単位、プロセス単位、クエリ単位、ロック単位など、様々な粒度で取得ができる 本講演の対象
  • 8. © 2021 NTT DATA Corporation 8 例えば、稼働統計情報に関するビュー PostgreSQLは、内部で蓄積したDBの稼働状況を「稼働統計情報」という形でビューとして提供 • backendやautovacuumなど、サーバプロセスの動的情報を集計・統計化、稼働統計情報としてユーザにビュー提供 ③様々なビューとして提供 statistics collector backend autovacuum checkpointer ・・・ ① 定期的に稼働情報を送信 ② 統計化して管理 運用者 SQLクエリ =# SELECT … FROM pg_stat_database datname | xact_commit | xact_rollback ---------+-------------+-------------- db1 | 100 | 10 db2 | 200 | 20 例. PostgreSQLサーバで 実行されているクエリ取得 稼働統計情報
  • 9. © 2021 NTT DATA Corporation 9 PostgreSQLの内部情報を用いた 性能問題の分析イメージ
  • 10. © 2021 NTT DATA Corporation 10 PostgreSQLの内部情報を活用した分析例 「最近データベースが遅くなった」という場合を想定し、原因を特定をする過程のパターンをご 紹介 • トラブルシュートで特によく利用するビューやテーブルを取り上げます クライアント クエリの応答がなかなか返ってこない! スループットが下がった!
  • 11. © 2021 NTT DATA Corporation 11 バックエンド 問題特定の進め方 問題を特定していくためには、クエリ処理の流れ・アーキテクチャを把握しておくことが大切 • 確認すべきビューを把握するためにも必要になる クエリ処理の概要(今回必要な範囲のみ記載) クライアント SELECT/INSERT/ UPDATE/DELETE ②クエリの実行 (Query Execution) ①実行計画の作成 (Query Planning) インデックスやテーブルへのアクセスが発生 共有バッファ上にアクセスし、データが存在 しなければ、Disk上のデータを取得する。 排他制御も実施 データファイル 共有バッファ (Buffer IO) 排他 制御 クライアント クライアント
  • 12. © 2021 NTT DATA Corporation 12 (参考)PostgreSQLが提供するモニタリング機能一覧 今回ご紹介するもの以外にもPostgreSQLは多数のモニタリング用のビュー・関数を提供している コンポーネントごとに内部状態を把握するための方法を一覧化しているサイト(pgstats.dev)もある https://pgstats.dev/
  • 13. © 2021 NTT DATA Corporation 13 バックエンド DB単位で処理状況を確認 “pg_stat_database” ビューで、DB単位(※)で統計情報を確認可能 • まずはマクロな視点(DB単位)から原因を切り分けて、ミクロな視点(クエリ単位など)に詳細化していく クエリ処理の概要 クライアント SELECT/INSERT/ UPDATE/DELETE ②クエリの実行 (Query Execution) ①実行計画の作成 (Query Planning) 共有バッファ上にアクセスし、データが存在 しなければ、Disk上のデータを取得する。 排他制御も実施。 データファイル 共有バッファ (Buffer IO) 排他 制御 クライアント クライアント (※) PostgreSQLは、1つのインスタンスに複数のDBを作成できる
  • 14. © 2021 NTT DATA Corporation 14 pg_stat_databaseの項目 pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される # コミット/ロールバック数 xact_commit | 4207296 xact_rollback | 57 # 更新・参照件数など tup_returned | 291951289 tup_fetched | 15978127 tup_inserted | 59411718 tup_updated | 12616512 tup_deleted | 294 # 読み込み時に共有バッファに存在していた/存在していなかったブロック数 blks_hit | 115024816 blks_read | 7071907 # データファイルのブロック読み込み・書き込みに費やされた合計時間(track_io_timingパラメータの有効化が必要) blk_read_time | 14235 blk_write_time | 214
  • 15. © 2021 NTT DATA Corporation 15 pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される # コミット/ロールバック数 xact_commit | 4207296 xact_rollback | 57 # 更新・参照件数など tup_returned | 291951289 tup_fetched | 15978127 tup_inserted | 59411718 tup_updated | 12616512 tup_deleted | 294 # 読み込み時に共有バッファに存在していた・ 存在していなかったブロック数 blks_hit | 115024816 blks_read | 7071907 # データファイルのブロック読み込み・書き込みに費やされた合計時間 blk_read_time | 14235 blk_write_time | 214 pg_stat_databaseで見るべきポイント 共有バッファ上のデータのヒット状況を把握するために利用。 通常時と比較して、ヒット率が低くなっている場合は、 Disk上 のデータにアクセスがより高頻度で発生している可能性がある ⇒ 他のクエリからの大量のINSERTが発生しているなど、共有 バッファ領域が不足している可能性がある データファイル 共有バッファ (Buffer IO) blks_hit (高速) blks_read (低速)
  • 16. © 2021 NTT DATA Corporation 16 pg_stat_databaseの情報(よく利用する項目を抜粋) ※DB単位で統計情報は出力される # コミット/ロールバック数 xact_commit | 4207296 xact_rollback | 57 # 更新・参照件数など tup_returned | 291951289 tup_fetched | 15978127 tup_inserted | 59411718 tup_updated | 12616512 tup_deleted | 294 # 読み込み時に共有バッファに存在していた/存在していなかったブロック数 blks_hit | 115024816 blks_read | 7071907 # データファイルのブロック読み込み・ 書き込みに費やされた合計時間 blk_read_time | 14235 blk_write_time | 214 pg_stat_databaseで見るべきポイント ブロック情報の読み込み・書き込み時間を知るために利用 (事前に track_io_timing を有効化しておく必要がある) 共有バッファへのキャッシュヒット率が高いにも関わらず、読み込 み時間が増加している場合 ⇒ Disk故障などが原因になっている可能性がある データファイル 共有バッファ (Buffer IO) キャッシュヒット率高い ココが遅い ⇒ Disk故障やDiskへの 多重アクセスなど?
  • 17. © 2021 NTT DATA Corporation 17 バックエンド クエリ単位で処理状況を確認 “pg_stat_statements” ビュー(※)で、SQL文単位の統計情報を確認可能 • 特定の種類のクエリに問題ないか確認する クエリ処理の概要 クライアント SELECT/INSERT/ UPDATE/DELETE ②クエリの実行 (Query Execution) ①実行計画の作成 (Query Planning) ②では、インデックスやテーブルへのアクセ スが発生する 共有バッファ上にアクセスし、データが存在 しなければ、Disk上のデータを取得する。 排他制御も実施。 データファイル 共有バッファ (Buffer IO) 排他 制御 クライアント クライアント (※)事前にpg_stat_statementsをインストール・有効化しておく必要がある
  • 18. © 2021 NTT DATA Corporation 18 pg_stat_statementsの項目 pg_stat_statementsの情報(一部項目を抜粋) ※SQL文単位で統計情報は出力される # SQL文 query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 # 実行計画を生成した回数・生成時間 plans | 250451 mean_plan_time | 17049.87321800001 # 本SQL文の実行回数・実行時間 calls | 250451 mean_exec_time | 0.04684529807427434 # 本SQL文で取得した/影響を受けたレコード数 rows | 250451
  • 19. © 2021 NTT DATA Corporation 19 pg_stat_statementsの項目 pg_stat_statementsの情報(一部項目を抜粋) ※ SQL文単位で統計情報は出力される # ブロック操作状況 shared_blks_hit | 770183 shared_blks_read | 0 shared_blks_dirtied | 10 shared_blks_written | 22 # ブロック読み込み・書き込みに費やされた合計時間(track_io_timingパラメータの有効化が必要) blk_read_time | 0 blk_write_time | 0 # 生成したWALレコード wal_records | 258394 wal_fpi | 0 wal_bytes | 19269318
  • 20. © 2021 NTT DATA Corporation 20 本資料で深堀りする事象 pg_stat_statementsの情報(一部項目を抜粋) ※クエリ単位で統計情報は出力される # SQL文 query | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 # 実行計画を生成した回数・生成時間 plans | 250451 total_plan_time | 17049.87321800001 # 本SQL文の実行回数・実行時間 calls | 250451 total_exec_time | 11732.451748000254 # 本SQL文で取得した/影響を受けたレコード数 rows | 250451 特定クエリの実行時間が長くなっているかどうかを把握できる 通常時と比較して、特定のクエリの実行時間だけが長くなっている 場合、本SQL文の実行がボトルネックになっている可能性がある ⇒ 本クエリについて詳細に分析を進める必要があるので、 リアルタイムなクエリの実行状態を確認してみる
  • 21. © 2021 NTT DATA Corporation 21 バックエンドなどの現在の状況を確認できる pg_stat_activityビュー “pg_stat_activity” ビューでバックエンドなどPostgreSQLプロセスの現在の状況を確認できる • DBサーバ側のクエリ処理状況をリアルタイムで確認するために利用する バックエンド クエリ処理の概要 クライアント SELECT/INSERT/ UPDATE/DELETE ②クエリの実行 (Query Execution) ①実行計画の作成 (Query Planning) ②では、インデックスやテーブルへのアクセ スが発生する 共有バッファ上にアクセスし、データが存在 しなければ、Disk上のデータを取得する。 排他制御も実施。 データファイル 共有バッファ (Buffer IO) 排他 制御 クライアント クライアント
  • 22. © 2021 NTT DATA Corporation 22 pg_stat_activityで見るべきポイント pg_stat_activityビュー(よく利用する項目を抜粋) # 基本情報 datname | pgbench pid | 34195 application_name | pgbench client_addr | query | UPDATE pgbench_branches SET bbalance = bbalance … # 接続・トランザクション・クエリの開始時間 backend_start | 2021-10-10 11:14:40.251874+09 Xact_start | 2021-10-10 11:14:40.249069+09 query_start | 2021-10-10 11:14:40.249069+09 # 待機イベント wait_event_type | Lock wait_event | tuple
  • 23. © 2021 NTT DATA Corporation 23 pg_stat_activityで見るべきポイント pg_stat_activityビュー(よく利用する項目を抜粋) # 基本情報 datname | pgbench pid | 34195 application_name | pgbench client_addr | query | UPDATE pgbench_branches SET bbalance = bbalance … # 接続・トランザクション・クエリの開始時間 backend_start | 2021-12-10 11:14:40.251874+09 xact_start | 2021-12-10 11:14:40.249069+09 query_start | 2021-12-10 11:14:40.249069+09 # 待機イベント wait_event_type | Lock wait_event | tuple 待機イベントは、処理を待っている理由を示す。 ボトルネックとなっている可能性がある事象を確認することができる。 ※ 注意点として、ビューを参照したタイミングの待機状態しか出力 されない。そのため、複数回実行して、傾向を確認した方がよい 例えば、 ・ロックイベントが頻発している場合 ⇒ ロック競合が発生している可能性あり。 ロックの詳細を確認する(次ページ)
  • 24. © 2021 NTT DATA Corporation 24 ロック待ちが多い場合 システムカタログの “pg_locks” でロック情報の詳細を確認できる • ロックの粒度、ロックを保持しているプロセス、トランザクションなどから、原因の絞り込みが実施できる バックエンド クエリ処理の概要 クライアント SELECT/INSERT/ UPDATE/DELETE ②クエリの実行 (Query Execution) ①実行計画の作成 (Query Planning) ②では、インデックスやテーブルへのアクセ スが発生する 共有バッファ上にアクセスし、データが存在 しなければ、Disk上のデータを取得する。 排他制御も実施。 データファイル 共有バッファ (Buffer IO) クライアント クライアント 排他 制御
  • 25. © 2021 NTT DATA Corporation 25 pg_locksの項目 pg_locksではロック情報を参照可能。pg_blocking_pids()関数から指定のPIDをブロックしているプロセス 群が把握可能。 • なお、単体では解析しずらいため、pg_stat_activityやpg_classなどとそれぞれpid, relationでJOINして分析する ことも多い pg_locksなどの情報(よく利用する項目を抜粋) # トランザクションに関する情報 pid | 21060 # ロックを保持(or予定)しているプロセスID database | 13027 # データベースのOID relation | 3455 # リレーションのOID # ロックに関する情報 locktype | relation # ロック対象のオブジェクト mode | RowExclusiveLock # 獲得(or予定)しているロックモード waitStart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻 pg_blocking_pids(pg_locks.pid)の情報 pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID
  • 26. © 2021 NTT DATA Corporation 26 pg_locksなどの情報(よく利用する項目を抜粋) # トランザクションに関する情報 pid | 21060 # ロックを保持(or予定)しているプロセスID database | 13027 # データベースのOID relation | 3455 # リレーションのOID # ロックに関する情報 locktype | relation # ロック対象のオブジェクト mode | RowExclusiveLock # 獲得(or予定)しているロックモード waitStart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻 pg_blocking_pids(pg_locks.pid)の情報 pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID pg_locksで見るべきポイント ロック待ち開始時刻 待ち時間が長いほど影響が大きくなりやすい
  • 27. © 2021 NTT DATA Corporation 27 pg_locksなどの情報(よく利用する項目を抜粋) # トランザクションに関する情報 pid | 21060 # ロックを保持(or予定)しているプロセスID database | 13027 # データベースのOID relation | 3455 # リレーションのOID # ロックに関する情報 locktype | relation # ロック対象のオブジェクト mode | RowExclusiveLock # 獲得(or予定)しているロックモード waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻 pg_blocking_pids(pg_locks.pid)の情報 pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID pg_locksで見るべきポイント 本サーバプロセスをブロックしているプロセスのPID
  • 28. © 2021 NTT DATA Corporation 28 pg_locksなどの情報(よく利用する項目を抜粋) # トランザクションに関する情報 pid | 21060 # ロックを保持(or予定)しているプロセスID database | 13027 # データベースのOID relation | 3455 # リレーションのOID # ロックに関する情報 locktype | relation # ロック対象のオブジェクト mode | RowExclusiveLock # 獲得(or予定)しているロックモード waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻 pg_blocking_pids(pg_locks.pid)の情報 pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID pg_locksで見るべきポイント locktypeはロック対象のオブジェクト。対象オブジェクトによって、想 定される原因が異なる ・locktype=relationの場合 表ロック。競合している場合、ALTER TABLE、CLUSTERなど が並行して走っている可能性 ・locktype=transactionid or tupleの場合 行ロック。競合している場合、同一行に対するUPDATEが並行 して、集中して発生している可能性 ・locktype=extendの場合 テーブル拡張のためのロック。同一テーブルにINSERTが集中し ている可能性
  • 29. © 2021 NTT DATA Corporation 29 pg_locksなどの情報(よく利用する項目を抜粋) # トランザクションに関する情報 pid | 21060 # ロックを保持(or予定)しているプロセスID database | 13027 # データベースのOID relation | 3455 # リレーションのOID # ロックに関する情報 locktype | relation # ロック対象のオブジェクト mode | RowExclusiveLock # 獲得(or予定)しているロックモード waitstart | 2021-10-10 13:12:14.820276+09 # ロック待ち開始時刻 pg_blocking_pids(pg_locks.pid)の情報 pg_blocking_pids | {34623,34628,34631,34622} # ブロックしているプロセスID )しているロックモード pg_locksで見るべきポイント modeは、同時アクセスを制御するためのロックモード 例えば、RowExclusiveLockの場合は、 テーブルのデータを変更する場合に獲得される ⇒ UPDATE/DELETE/INSERTなどが並行して走っている可能性 (※)ロックモードによって、同時実行の可否が決定する https://www.postgresql.org/docs/14/explicit-locking.html
  • 30. © 2021 NTT DATA Corporation 30 ご紹介した分析事例に利用した情報のまとめ 「データベースの応答が遅くなった」場合を想定し、ドリルダウンする形で分析 • いつもこのやり方がよいわけではないが、問題が曖昧な場合や、見落としの確認などに有効 データベースの応答が 最近に遅くなった pg_stat_database pg_stat_activity pg_stat_statements データ更新が大量に発生してい ないかなど、原因を追加調査 全体的にブロック読み込み時間が増加 同一テーブルにINSERTが集中して発 生していないかなど、原因を追加調査 (pg_stat_user_tablesなどを活用) DB単位 クエリ単位 pg_locks 特定のクエリが遅い ⇒ 待機イベントなどを確認 ロック待ちが多い ⇒ ロックの詳細確認 Diskの故障が発生していない かなど、原因を追加調査 全体的にキャッシュヒット率が低下 状況に応じて、原因を追加調査 その他も事象は多数… (平常時との変化など) 実行計画の確認
  • 31. © 2021 NTT DATA Corporation 31 さらなる安定稼働を目指すためのモニタリング
  • 32. © 2021 NTT DATA Corporation 32 さらなる安定稼働を目指すためのモニタリング PostgreSQLのモニタリング情報は現在も拡充を続けています 以下、赤枠で囲んだNTTデータが提案・開発したPostgreSQL 14のモニタリング機能をご紹介します • バックエンドプロセスのメモリ利用状況に関する情報 • DBクラスタ全体のWALに関する統計情報 • pg_locksビューへのwaitstart列追加 • pg_stat_statementsの改善※ ※pg_stat_statements_infoビューの新規導入、処理対象行数を出力できるSQLコマンドの追加がされました。 詳細は資料をご参照ください。 https://www.slideshare.net/nttdata-tech/postgresql-14-pg-stat-statements- improvements-pgunconf23-nttdata
  • 33. © 2021 NTT DATA Corporation 33 バックエンドプロセスのメモリ利用状況に関する情報 ~MemoryContextの確認~
  • 34. © 2021 NTT DATA Corporation 34 MemoryContextとは PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理している • 用途に応じたMemoryContextを作成し、メモリを割り当て(palloc) • 親のMemoryContextが削除されると、その子孫のMemoryContextも全て削除 ⇒ 構造化されているため、メモリ管理がmalloc()よりも容易に TopMemoryContext CacheMemoryContext TopPortalContext TopTransactionContext … … Context … Context 親は1つ 子は複数可 ※TopMemoryContextは親なし Context … Context …
  • 35. © 2021 NTT DATA Corporation 35 MemoryContextの情報を取得する必要性 特定のContextが肥大化したり、大量のContextが作成されることで、メモリを逼迫することがある 例) • PostgreSQL内部のキャッシュ(relcacheなど)増加 • 大量のPreparedStatement • メモリリーク OSからはPostgreSQLプロセスのメモリが肥大化していることはわかるが、PostgreSQLが何にメモリを利用して いるかまではわからない PostgreSQL 13までは、 MemoryContextの情報を得るにはデバッガが必要 商用環境などではデバッガやデバッグシンボルが導入されていないなどの理由で使えないことも 実行例 (gdb) call MemoryContextStats(TopMemoryContext)
  • 36. © 2021 NTT DATA Corporation 36 V14でできるようになったこと pg_backend_memory_contextsビュー、pg_log_backend_memory_contexts()関数から、それぞ れローカルプロセス、指定のバックエンドのMemoryContextを確認可能 Contextを特定する情報があれば、identに出力される 例) PREPARE文を実行した場合 階層の深さはlevelで表現
  • 37. © 2021 NTT DATA Corporation 37 DBクラスタ全体のWALに関する統計情報
  • 38. © 2021 NTT DATA Corporation 38 WALモニタリングの必要性 • WAL(Write Ahead Logging)は、 トランザクションの内容をテーブルなどデータファイルに書き込む前に、 ログとして記録しておく手法 • クラッシュリカバリ、オンライン物理バックアップ、レプリケーションでも利用される重要な仕組み • ディスクへの永続化をすることもあり、更新が多いワークロードなどの場合、WAL書き出しがDisk I/Oのボト ルネックになることも
  • 39. © 2021 NTT DATA Corporation 39 V13で確認できるWALの統計情報 PostgreSQL V13では、以下のWALに関するメトリクスが取得可能に • pg_stat_statements, EXPLAN: クエリ単位で生成したWALレコード数など • Autovacuum: バキューム時に生成したWALレコード数など pg_stat_statementsビュー postgres=# SELECT query, wal_records, wal_fpi, wal_bytes FROM pg_stat_statements; query | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 wal_records | 206328 # 本クエリによって、生成された合計WAL数 wal_fpi | 3807 # 本クエリによって、生成された合計full page images数(※) wal_bytes | 43960467 # 本クエリによって、生成された合計WALバイト数 (※) 通常書き出されるWALと比較して、サイズが大きく、Disk書き込みの負荷が高いWALレコード。 鈴木啓修さんのslideshare 「PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)」が詳しいので、ご興味のある方はご参考ください。
  • 40. © 2021 NTT DATA Corporation 40 V14でできるようになったこと DBクラスタ全体のWALに関する活動をモニタリングするpg_stat_walビューを導入 V13のpg_stat_statementsなどでモニタリング可能になった項目のDBクラスタ全体の情報に加え、WAL バッファが溢れてDiskへ書き込みが発生した回数をカウントするwal_buffers_fullを導入。 WALバッファが溢れてDisk書き込みが発生すると性能は劣化するが、WALバッファが溢れた回数を取得する方 法がなかった 頻繁に発生してる場合、WALバッファのサイズ(パラメータwal_buffersで設定可能)を増やすなどのチューニン グにつなげることができる pg_stat_walビュー wal_records | 36960 # DBクラスタ全体で、生成された合計WAL数 wal_fpi | 2785 # DBクラスタ全体で、生成された合計full page images数 wal_bytes | 128434288 # DBクラスタ全体で、合計WALバイト数 wal_buffers_full | 2826 # WALバッファが一杯でDiskへの書き込みが発生した回数
  • 41. © 2021 NTT DATA Corporation 41 ロック取得待ち時間の確認 ~pg_locksビューへのwaitstart列追加~
  • 42. © 2021 NTT DATA Corporation 42 V13までのpg_locks • pg_locksビューは、PostgreSQLプロセスによって取得されているロックの情報を表示するビュー • PostgreSQL 13以前では、ロック待ちを開始した時刻や、ロック待ちしている時間を取得する方法は提 供されていなかった • pg_stat_activityとpidで結合してquery_startやstate_changeで時刻を取得できるが、これら はクエリの開始時刻や状態が変化した時刻 …
  • 43. © 2021 NTT DATA Corporation 43 V14のpg_locks • ロック待ちを開始した時刻を表示するwaitstart列を追加 • 現在時刻との差分を見れば、ロック待ち時間が取得可能 … =# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _ =# SELECT relation, pid, mode, granted, now() – waitstart AS durtation FROM pg_locks; _
  • 44. © 2021 NTT DATA Corporation 44 V14のpg_locks • ロック待ちを開始した時刻を表示するwaitstart列を追加 • ロックを保持している場合はNULL • 現在時刻との差分を見れば、ロック待ち時間が取得可能 … =# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _ =# SELECT relation, pid, mode, granted, now() – waitstart AS durtation FROM pg_locks; _
  • 45. © 2021 NTT DATA Corporation 45 V14のpg_locksの注意点 • タイミングによってはロック取得待ち状態(grantedがfalse)なのに、waitstartがNULLになるケースがある 点に一応注意 • これは、オーバーヘッドを増やさないよう、waitstart更新時にロック取得しないようにしたために発生 • この状況はごく短時間しか発生しない、かつwaitstartが必要になるのは長時間ロックが解放されな い場合なので、実質的な影響はないはず …
  • 46. © 2021 NTT DATA Corporation 46 まとめ • モニタリングは、システムが正常に動作しているか把握したり、トラブルの原因を把握するた めに必要 • データベースのモニタリングでは、稼働統計情報などデータベース内部の状態を観察できる 手段がある • 基本的なモニタリング情報は抑えておくとよい pg_stat_database, pg_stat_statements, pg_stat_activity, pg_locksなど • PostgreSQLのモニタリング情報は現在も進化し続けている • PostgreSQLに追加したいモニタリング項目などがあれば検討したいので、教えてくださ い!
  • 47. © 2021 NTT DATA Corporation 47 We‘re Hiring!(1/2) https://nttdata.jposting.net/u/job.phtml?job_code=666 一緒に働く仲間を募集しています! データ活用プロフェッショナル (OSSエンジニア)<384> こんな方を募集しています!  NTTデータが関わる様々な案件で技術力を発揮し社会 に貢献したい方  自らの専門性も高めながら専門家集団で働きたい方  OSSのコミュニティ活動で世界と繋がっていきたい方、etc. 若手が中心の 活発な職場です https://nttdata.jposting.net/u/job.phtml?job_code=755 ※2021年6月現在 データ活用プロフェッショナル (IoT基盤エンジニア)<497> ※上記写真2枚はコロナ禍前に撮影したものです。
  • 48. © 2021 NTT DATA Corporation 48 We‘re Hiring!(2/2) https://nttdata.jposting.net/u/job.phtml?job_code=766 データ活用プロフェッショナル (DataOpsエンジニア)<498> JDK/JVMの高難度技術課題の解決と技術開発を担う Javaスペシャリスト<368> https://nttdata.jposting.net/u/job.phtml?job_code=645 データベースミドルウェア (PostgreSQL)の高度化・機能 拡充を実現する開発者<394> https://nttdata.jposting.net/u/job.phtml?job_code=676 ※2021年6月現在 一緒に働く仲間を募集しています!
  • 49. © 2021 NTT DATA Corporation 49 YouTubeチャンネル “NTT DATA Tech” 技 術 取り組 み、活 用 情 報 を中心にお 届けします https://www.youtube.com/NTTDATATech
  • 50. © 2021 NTT DATA Corporation

Notas do Editor

  1. DB毎のトランザクションのコミット・ロールバック回数。 スループットとエラー発生数と置き換えることで、 「システム性能が劣化しているか」「エラーが発生しているか」 などを把握するときに利用
  2. 一緒に働く仲間を募集しています。
  3. NTT DATA Tech という YouTubeチャンネルで、講演動画や技術情報を配信しています。 C会場で流れているCMのYoutubeを案内している声は私です。