SlideShare a Scribd company logo
12
Most read
13
Most read
20
Most read
© 2021 NTT DATA Corporation
PostgreSQL 14 モニタリング新機能紹介
2021年6月8日
株式会社NTTデータ 鳥越 淳
© 2021 NTT DATA Corporation 2
自己紹介
• 鳥越 淳(とりこし あつし)
2008年頃からオープンソースソフトウェアを扱う業務に従事
PostgreSQLは9.6頃から
『PostgreSQL徹底入門 第4版』(翔泳社) 8~13章執筆
© 2021 NTT DATA Corporation 3
本講演について
PostgreSQL 14導入予定のモニタリング新機能のうち、主にNTTデータが開発したものを2つご紹介します
• メモリ利用状況に関する情報
• ロック取得待ち時間の確認
本講演で紹介する機能や仕様は、Beta 1リリース時点のものです。
将来的に変更される可能性があることにご注意ください。
その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
© 2021 NTT DATA Corporation 4
バックエンドプロセスのメモリ利用状況に関する情報
~MemoryContextの確認~
© 2021 NTT DATA Corporation 5
PostgreSQLのメモリ構造とMemoryContext
MemoryContextは、PostgreSQLのバックエンドプロセスが動的にメモリを確保するために利用
ワークメモリ
メンテナンス
ワークメモリ
バックエンド
プロセス
…
ワークメモリ
メンテナンス
ワークメモリ
バックエンド
プロセス
…
共有メモリバッファ WALバッファ
共有メモリ
こっちの話
こっちじゃない
…
こっちの話
© 2021 NTT DATA Corporation 6
MemoryContextとは
PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理
TopMemoryContext
CacheMemoryContext TopPortalContext
TopTransactionContext … …
…
親は1つ
子は複数可
※TopMemoryContextは親なし
© 2021 NTT DATA Corporation 7
MemoryContextとは
TopMemoryContext
CacheMemoryContext TopPortalContext
TopTransactionContext … …
…
PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理
• 用途に応じてMemoryContextを作成、メモリを割り当てる(palloc)
CachedPlanSource
Prepared statement※作成時の例
…
作成
メモリ割り当て
作成
※Prepared statementとは..
クエリ実行に必要な処理の一部
(パース・リライトなど)を予め実行し
ておきキャッシュする仕組み
© 2021 NTT DATA Corporation 8
MemoryContextとは
PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理
• 親のMemoryContextが削除されると、その子孫のMemoryContextも全て削除される
TopMemoryContext
CacheMemoryContext TopPortalContext
TopTransactionContext … …
…
CachedPlanSource
…
Prepared statement削除時の例
削除
削除
© 2021 NTT DATA Corporation 9
MemoryContextの情報を取得する必要性
特定のMemoryContextが肥大化したり、大量のMemoryContextが作成されることで、メモリが逼迫するこ
とがある
例)
• 大量のPrepared statement
• PostgreSQL内部のキャッシュ(relcacheなど)増加
• メモリリーク
OSからはPostgreSQLプロセスのメモリが肥大化していることまでしかわからないが、MemoryContextを確認
すれば、PostgreSQL内部でのメモリの用途が把握可能
© 2021 NTT DATA Corporation 10
V13までのMemoryContextの確認
デバッグ用関数MemoryContextStats()で指定したContext以下の全Contextの状況を把握可能
• 使い方
デバッガから呼び出す
(gdb) call MemoryContextStats(TopMemoryContext) ,
• 出力例
階層の深さはインデントで表現
総計も出力
出力先はstderr
⇒ “logging_collector”がonの
場合、ログファイルに出力
© 2021 NTT DATA Corporation 11
V13までのMemoryContextの確認のつらみ
• 商用環境で利用しづらい
• デバッグシンボルがインストールされていること(ソースからビルド configure --enable-debug)
• デバッガがインストールされていること
• 出力が集計しづらい、やや見にくい
• 出力例(再掲)
起動直後idle状態でも80行くらい省略している
© 2021 NTT DATA Corporation 12
V14でできるようになること
pg_backend_memory_contextsビューから、ローカルプロセスのMemoryContextが確認可能
• 内容はMemoryContextStatsDetail()と同等
Contextを特定する情報があれば、identに出力される
例) Prepared Statementを実行した場合
階層の深さはlevelで表現
© 2021 NTT DATA Corporation 13
V14でできるようになること
pg_log_backend_memory_contexts()で任意のバックエンドプロセスのMemoryContextが確認
可能
• 出力先はログファイル
• 内容はMemoryContextStatsDetail()と同等
• 1つの親MemoryContextが出力する子MemoryContext数は、100に制限。101以降の
MemoryContextの情報はサマリのみ出力
• 出力例
• 出力例
=# SELECT pg_log_backend_memory_contexts(取得したいバックエンドのPID); _
© 2021 NTT DATA Corporation 14
V14のMemoryContext出力の注意点
• pg_backend_memory_contextsビューの参照、pg_log_backend_memory_contexts()の実
行は、いずれもスーパーユーザ権限が必要
• pg_backend_memory_contextsビューの参照権限は、GRANT文で一般ユーザへ付与可能
• pg_log_backend_memory_contexts()の実行権限は、一般ユーザには付与できない
• 本関数を大量に実行してDoS攻撃されるのを予防するため
© 2021 NTT DATA Corporation 15
(参考)V13以前でSQLによるMemeoryContext確認
エクステンションpg_cheat_funcs[1]を利用すれば、同様のことがV9.6~でも可能
• pg_stat_get_memory_context()
• というかほぼこの機能をPostgreSQL本体に移植
• “ident”相当の情報はない
• pg_cheat_funcsでは、ほかにもPostgreSQLで取り扱い可能な全UTF-8文字を返す関数
(pg_all_utf8())、トランザクションIDを変更する関数など、いろいろな機能が提供されている
[1] https://github.com/MasaoFujii/pg_cheat_funcs
© 2021 NTT DATA Corporation 16
ロック取得待ち時間の確認
~pg_locksビューへのwaitstart列追加~
© 2021 NTT DATA Corporation 17
V13までのpg_locks
• pg_locksビューは、PostgreSQLプロセスによって取得されているロックの情報を表示するビュー
• PostgreSQL 13以前では、ロック待ちを開始した時刻や、ロック待ちしている時間を取得する方法は提供
されていなかった
• pg_stat_activityとpidでJOINしてquery_startやstate_changeで時刻を取得できるが、これ
らはクエリの開始時刻や状態が変化した時刻
列名 概要
locktype ロック対象オブジェクトの種類。relation, page, tupleなど
relation, page, tuple ロックの対象となるリレーションのOID、ページ番号、タプル番号
pid ロックを保持、もしくは待っているサーバプロセスのプロセスID
mode このプロセスで保持または要求するロックモードの名称
granted ロックが保持されている場合は真、ロックが待ち状態の場合は偽
pg_locksビューの列(一部)
© 2021 NTT DATA Corporation 18
V14のpg_locks
• ロック待ちを開始した時刻を表示するwaitstart列を追加
• ロックを保持している場合はNULL
• 現在時刻との差分を見れば、ロック待ち時間が取得可能
…
=# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _
=# SELECT relation, pid, mode, granted, now() – waitstart AS duration FROM pg_locks; _
© 2021 NTT DATA Corporation 19
V14のpg_locksの注意点
• タイミングによってはロック取得待ち状態(grantedがfalse)なのに、waitstartがNULLになるケースがある
点に一応注意
• これは、オーバーヘッドを削減するために、ロックを取得せずにwaitstartを更新しているために発生
• この状況はごく短時間しか発生しない、かつwaitstartが必要になるのは長時間ロックが解放されな
い場合なので、実質的な影響はないはず
…
© 2021 NTT DATA Corporation 20
まとめ 今回ご紹介したv14の新機能
• MemoryContextの情報を確認する手段が提供された
• バックエンドローカル: pg_backend_memory_contexts ビュー
• バックエンドローカル以外: pg_log_backend_memory_contexts()
• ロック待ちを開始した時刻をpg_locksビューのwaitstart列から確認できるようになった
…
こんなものもモニタリングしたいというご要望があれば教えてください!!
© 2021 NTT DATA Corporation
Ad

Recommended

VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
NTT DATA OSS Professional Services
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回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 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 

More Related Content

What's hot (20)

アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回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 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回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 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 

Similar to PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08) (20)

バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介
NTT DATA OSS Professional Services
 
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
Toru Shimogaki
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
オラクルエンジニア通信
 
世界征服を目指すJubatusだからこそ期待する5つのポイント
世界征服を目指すJubatusだからこそ期待する5つのポイント
NTT DATA OSS Professional Services
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
NTT DATA Technology & Innovation
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
NTT DATA Technology & Innovation
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
Toshikazu Ichikawa
 
OpenTelemetryMeetup_2024-11_DENSO_FIoT.pdf
OpenTelemetryMeetup_2024-11_DENSO_FIoT.pdf
Tetsuya Nakao
 
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
Hinemos
 
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
オラクルエンジニア通信
 
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
バージョン17からのpg_stat_bgwriter (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
世界征服を目指す Jubatus だからこそ期待する 5 つのポイント
Toru Shimogaki
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
NTT DATA Technology & Innovation
 
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
オラクルエンジニア通信
 
世界征服を目指すJubatusだからこそ期待する5つのポイント
世界征服を目指すJubatusだからこそ期待する5つのポイント
NTT DATA OSS Professional Services
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
NTT DATA Technology & Innovation
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
NTT DATA Technology & Innovation
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
CODT2020 OpenStack Version Up and VMHA Masakari in Enterprise Cloud
Toshikazu Ichikawa
 
OpenTelemetryMeetup_2024-11_DENSO_FIoT.pdf
OpenTelemetryMeetup_2024-11_DENSO_FIoT.pdf
Tetsuya Nakao
 
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
運用アナリティクスを実現!最新Hinemos ver.6.1の全体像
Hinemos
 
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
オラクルエンジニア通信
 
Ad

More from NTT DATA Technology & Innovation (20)

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

PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)

  • 1. © 2021 NTT DATA Corporation PostgreSQL 14 モニタリング新機能紹介 2021年6月8日 株式会社NTTデータ 鳥越 淳
  • 2. © 2021 NTT DATA Corporation 2 自己紹介 • 鳥越 淳(とりこし あつし) 2008年頃からオープンソースソフトウェアを扱う業務に従事 PostgreSQLは9.6頃から 『PostgreSQL徹底入門 第4版』(翔泳社) 8~13章執筆
  • 3. © 2021 NTT DATA Corporation 3 本講演について PostgreSQL 14導入予定のモニタリング新機能のうち、主にNTTデータが開発したものを2つご紹介します • メモリ利用状況に関する情報 • ロック取得待ち時間の確認 本講演で紹介する機能や仕様は、Beta 1リリース時点のものです。 将来的に変更される可能性があることにご注意ください。 その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。
  • 4. © 2021 NTT DATA Corporation 4 バックエンドプロセスのメモリ利用状況に関する情報 ~MemoryContextの確認~
  • 5. © 2021 NTT DATA Corporation 5 PostgreSQLのメモリ構造とMemoryContext MemoryContextは、PostgreSQLのバックエンドプロセスが動的にメモリを確保するために利用 ワークメモリ メンテナンス ワークメモリ バックエンド プロセス … ワークメモリ メンテナンス ワークメモリ バックエンド プロセス … 共有メモリバッファ WALバッファ 共有メモリ こっちの話 こっちじゃない … こっちの話
  • 6. © 2021 NTT DATA Corporation 6 MemoryContextとは PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理 TopMemoryContext CacheMemoryContext TopPortalContext TopTransactionContext … … … 親は1つ 子は複数可 ※TopMemoryContextは親なし
  • 7. © 2021 NTT DATA Corporation 7 MemoryContextとは TopMemoryContext CacheMemoryContext TopPortalContext TopTransactionContext … … … PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理 • 用途に応じてMemoryContextを作成、メモリを割り当てる(palloc) CachedPlanSource Prepared statement※作成時の例 … 作成 メモリ割り当て 作成 ※Prepared statementとは.. クエリ実行に必要な処理の一部 (パース・リライトなど)を予め実行し ておきキャッシュする仕組み
  • 8. © 2021 NTT DATA Corporation 8 MemoryContextとは PostgreSQLでは、MemoryContextと呼ばれる単位を使って、Tree構造でメモリを管理 • 親のMemoryContextが削除されると、その子孫のMemoryContextも全て削除される TopMemoryContext CacheMemoryContext TopPortalContext TopTransactionContext … … … CachedPlanSource … Prepared statement削除時の例 削除 削除
  • 9. © 2021 NTT DATA Corporation 9 MemoryContextの情報を取得する必要性 特定のMemoryContextが肥大化したり、大量のMemoryContextが作成されることで、メモリが逼迫するこ とがある 例) • 大量のPrepared statement • PostgreSQL内部のキャッシュ(relcacheなど)増加 • メモリリーク OSからはPostgreSQLプロセスのメモリが肥大化していることまでしかわからないが、MemoryContextを確認 すれば、PostgreSQL内部でのメモリの用途が把握可能
  • 10. © 2021 NTT DATA Corporation 10 V13までのMemoryContextの確認 デバッグ用関数MemoryContextStats()で指定したContext以下の全Contextの状況を把握可能 • 使い方 デバッガから呼び出す (gdb) call MemoryContextStats(TopMemoryContext) , • 出力例 階層の深さはインデントで表現 総計も出力 出力先はstderr ⇒ “logging_collector”がonの 場合、ログファイルに出力
  • 11. © 2021 NTT DATA Corporation 11 V13までのMemoryContextの確認のつらみ • 商用環境で利用しづらい • デバッグシンボルがインストールされていること(ソースからビルド configure --enable-debug) • デバッガがインストールされていること • 出力が集計しづらい、やや見にくい • 出力例(再掲) 起動直後idle状態でも80行くらい省略している
  • 12. © 2021 NTT DATA Corporation 12 V14でできるようになること pg_backend_memory_contextsビューから、ローカルプロセスのMemoryContextが確認可能 • 内容はMemoryContextStatsDetail()と同等 Contextを特定する情報があれば、identに出力される 例) Prepared Statementを実行した場合 階層の深さはlevelで表現
  • 13. © 2021 NTT DATA Corporation 13 V14でできるようになること pg_log_backend_memory_contexts()で任意のバックエンドプロセスのMemoryContextが確認 可能 • 出力先はログファイル • 内容はMemoryContextStatsDetail()と同等 • 1つの親MemoryContextが出力する子MemoryContext数は、100に制限。101以降の MemoryContextの情報はサマリのみ出力 • 出力例 • 出力例 =# SELECT pg_log_backend_memory_contexts(取得したいバックエンドのPID); _
  • 14. © 2021 NTT DATA Corporation 14 V14のMemoryContext出力の注意点 • pg_backend_memory_contextsビューの参照、pg_log_backend_memory_contexts()の実 行は、いずれもスーパーユーザ権限が必要 • pg_backend_memory_contextsビューの参照権限は、GRANT文で一般ユーザへ付与可能 • pg_log_backend_memory_contexts()の実行権限は、一般ユーザには付与できない • 本関数を大量に実行してDoS攻撃されるのを予防するため
  • 15. © 2021 NTT DATA Corporation 15 (参考)V13以前でSQLによるMemeoryContext確認 エクステンションpg_cheat_funcs[1]を利用すれば、同様のことがV9.6~でも可能 • pg_stat_get_memory_context() • というかほぼこの機能をPostgreSQL本体に移植 • “ident”相当の情報はない • pg_cheat_funcsでは、ほかにもPostgreSQLで取り扱い可能な全UTF-8文字を返す関数 (pg_all_utf8())、トランザクションIDを変更する関数など、いろいろな機能が提供されている [1] https://github.com/MasaoFujii/pg_cheat_funcs
  • 16. © 2021 NTT DATA Corporation 16 ロック取得待ち時間の確認 ~pg_locksビューへのwaitstart列追加~
  • 17. © 2021 NTT DATA Corporation 17 V13までのpg_locks • pg_locksビューは、PostgreSQLプロセスによって取得されているロックの情報を表示するビュー • PostgreSQL 13以前では、ロック待ちを開始した時刻や、ロック待ちしている時間を取得する方法は提供 されていなかった • pg_stat_activityとpidでJOINしてquery_startやstate_changeで時刻を取得できるが、これ らはクエリの開始時刻や状態が変化した時刻 列名 概要 locktype ロック対象オブジェクトの種類。relation, page, tupleなど relation, page, tuple ロックの対象となるリレーションのOID、ページ番号、タプル番号 pid ロックを保持、もしくは待っているサーバプロセスのプロセスID mode このプロセスで保持または要求するロックモードの名称 granted ロックが保持されている場合は真、ロックが待ち状態の場合は偽 pg_locksビューの列(一部)
  • 18. © 2021 NTT DATA Corporation 18 V14のpg_locks • ロック待ちを開始した時刻を表示するwaitstart列を追加 • ロックを保持している場合はNULL • 現在時刻との差分を見れば、ロック待ち時間が取得可能 … =# SELECT relation, pid, mode, granted, waitstart FROM pg_locks; _ =# SELECT relation, pid, mode, granted, now() – waitstart AS duration FROM pg_locks; _
  • 19. © 2021 NTT DATA Corporation 19 V14のpg_locksの注意点 • タイミングによってはロック取得待ち状態(grantedがfalse)なのに、waitstartがNULLになるケースがある 点に一応注意 • これは、オーバーヘッドを削減するために、ロックを取得せずにwaitstartを更新しているために発生 • この状況はごく短時間しか発生しない、かつwaitstartが必要になるのは長時間ロックが解放されな い場合なので、実質的な影響はないはず …
  • 20. © 2021 NTT DATA Corporation 20 まとめ 今回ご紹介したv14の新機能 • MemoryContextの情報を確認する手段が提供された • バックエンドローカル: pg_backend_memory_contexts ビュー • バックエンドローカル以外: pg_log_backend_memory_contexts() • ロック待ちを開始した時刻をpg_locksビューのwaitstart列から確認できるようになった … こんなものもモニタリングしたいというご要望があれば教えてください!!
  • 21. © 2021 NTT DATA Corporation