SlideShare a Scribd company logo
6
Most read
7
Most read
10
Most read
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
2021年8月24日 第26回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ
清野 裕貴
2
© 2021 NTT DATA Corporation
本講演について
講演資料は、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
3
© 2021 NTT DATA Corporation
自己紹介
清野 裕貴
@NTTデータ
現在(2020.07~)
PostgreSQL研究開発、社内普及展開
これまで(~2020.06)
公共系プロジェクトのPM/AP要件定義・設計の業務に従事
※使用していたRDBMSはOracle Database 11g,12c
@YukiSeino
4
© 2021 NTT DATA Corporation
本日の説明内容
本日は、PostgreSQL統計情報の内部構造を説明します!
(一般的な統計情報関連のキーワードを理解している前提で進めます。[統計情報コレクタ、実行計画等])
私自身が統計情報を理解していく上で躓いたポイントを中心に説明しますので、
既にPostgreSQL内部構造・統計情報への理解がプロフェッショナルな方には、
物足りない内容となってしまうこと、ご容赦ください!!
5
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
PostgreSQLの統計情報について何となく理解できたが、理解が断片的で不安。。。
統計情報 統計情報コレクタ
稼働統計情報
プランナ
実行計画
動的統計情報ビュー
収集済み統計情報ビュー
PostgreSQLで扱う統計情報を一枚絵にしてみました。
⇒感想:自分なりに各キーワードの位置づけが整理できました
アナライズ
pg_stat_*** pg_class
pg_statistic
6
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
各サーバプロセス
stats collector
(統計情報コレクタ)
SQL操作
postgres
(バックエンドプロセス)
・ 収集済み統計情報ビュー
・ 動的統計情報ビュー
=# SELECT * FROM pg_stat_***
VACUUM
その他
① 統計情報コレクタにレポート
(ローカルメモリを更新)
②ー2 統計情報コレクタがローカルメモリ
の内容をファイルへ更新
②ー3
更新された統計
情報を取得
/data/pg_stat_tmp
②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求)
=# ANALYZE ;
autovacuum worker
ANALYZE
VACUUM
システムカタログ
(pg_class,
pg_statistic…)
postgres
(バックエンドプロセス)
①ー2
手動ANALYZEによる
統計情報更新
①ー1
自動ANALYZEによる
統計情報更新
クライアント
パーサ
アナライザ
リライタ
プランナ
=# SELECT * FROM hoge WHERE … ;
postgres
(バックエンドプロセス)
②
統計
情報
利用
エグゼキュータ
実行計画で使用される統計情報
ユーザーに提供する統計情報
共有メモリ
③ー1
共有メモリの
情報を更新
③ー2
共有メモリから
情報を取得
(一部のビュー)
稼働統計情報
[ファイル]
(global.stat,
db_{OID}.stat)
稼働統計情報
[ローカルメモリ]
7
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
実行計画で使用される統計情報(システムカタログ)
① ANALYZE等によりシステムカタログを更新
② SQL実行時にプランナがシステムカタログ
から統計情報を取得
=# ANALYZE ;
autovacuum worker
ANALYZE
VACUUM
システムカタログ
(pg_class,
pg_statistic…)
postgres
(バックエンドプロセス)
①ー2
手動ANALYZEによる
統計情報更新
①ー1
自動ANALYZEによる
統計情報更新
クライアント
パーサ
アナライザ
リライタ
プランナ
= SELECT * FROM hoge WHERE … ;
postgres
(バックエンドプロセス)
②
統計
情報
利用
エグゼキュータ
8
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
実行計画で使用される統計情報(システムカタログ)
プランナはANALYZEにより更新された「統計情報:システムカタログ」を使用して、実行計画を作成する。
① ANALYZE等によりシステムカタログを更新
② SQL実行時にプランナがシステムカタログ
から統計情報を取得
=# ANALYZE ;
autovacuum worker
ANALYZE
VACUUM
システムカタログ
(pg_class,
pg_statistic…)
postgres
(バックエンドプロセス)
①ー2
手動ANALYZEによる
統計情報更新
①ー1
自動ANALYZEによる
統計情報更新
クライアント
パーサ
アナライザ
リライタ
プランナ
=# SELECT * FROM hoge WHERE … ;
postgres
(バックエンドプロセス)
②
統計
情報
利用
エグゼキュータ
システムカタログの更新契機はANALYZEだけでなく、VACUUM
や一部DDLコマンドでも更新されます。
プランナはシステムカタログだ
けでなく、対象テーブルのサ
イズ等も取得します
9
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
ユーザーに提供する統計情報(稼働統計情報)
① 各データベース操作により統計情報コレクタの
ローカルメモリ内容を更新
②③ 統計情報ビュー(関数)による統計情報参照
各サーバプロセス
stats collector
(統計情報コレクタ)
SQL操作
postgres
(バックエンドプロセス)
・ 収集済み統計情報ビュー
・ 動的統計情報ビュー
=# SELECT * FROM pg_stat_***
VACUUM
その他
① 統計情報コレクタにレポート
(ローカルメモリを更新)
②ー2 統計情報コレクタがローカルメモリ
の内容をファイルへ更新
②ー3
更新された統計
情報を取得
/data/pg_stat_tmp
②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求)
稼働統計情報
[ファイル]
(global.stat,
db_{OID}.stat)
稼働統計情報
[ローカルメモリ]
10
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
ユーザーに提供する統計情報(稼働統計情報)
PostgreSQL利用者は統計情報コレクタにより更新された「統計情報:稼働統計情報」を確認する
① 各データベース操作により統計情報コレクタの
ローカルメモリ内容を更新
②③ 統計情報ビュー(関数)による統計情報参照
一部のビュー(pg_stat_activity)は稼働統計情報(ファイル)ではなく、共有メモリを参照する。
(統計情報コレクタを介せず、バックエンドプロセスが直接、共有メモリ内容を更新・取得する。)
稼働統計情報(テーブルの更新・挿入・削除の情報)は
autovacuum(VACUUM, ANALYZE)実行のトリガ情報としても使用される。
※間接的に実行計画で使用される統計情報(システムカタログ)に関係してくる。
各サーバプロセス
stats collector
(統計情報コレクタ)
SQL操作
postgres
(バックエンドプロセス)
・ 収集済み統計情報ビュー
・ 動的統計情報ビュー
=# SELECT * FROM pg_stat_***
VACUUM
その他
① 統計情報コレクタにレポート
(ローカルメモリを更新)
②ー2 統計情報コレクタがローカルメモリ
の内容をファイルへ更新
②ー3
更新された統計
情報を取得
/data/pg_stat_tmp
②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求)
共有メモリ
③ー1
共有メモリの
情報を更新
③ー2
共有メモリから
情報を取得
(一部のビュー)
稼働統計情報
[ファイル]
(global.stat,
db_{OID}.stat)
稼働統計情報
[ローカルメモリ]
11
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
各サーバプロセス
stats collector
(統計情報コレクタ)
SQL操作
postgres
(バックエンドプロセス)
・ 収集済み統計情報ビュー
・ 動的統計情報ビュー
=# SELECT * FROM pg_stat_***
稼働統計情報
[ファイル]
(global.stat,
db_{OID}.stat)
VACUUM
その他
① 統計情報コレクタにレポート
(ローカルメモリを更新)
②ー2 統計情報コレクタがローカルメモリ
の内容をファイルへ更新
②ー3
更新された統計
情報を取得
/data/pg_stat_tmp
②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求)
稼働統計情報
[ローカルメモリ]
=# ANALYZE ;
autovacuum worker
ANALYZE
VACUUM
システムカタログ
(pg_class,
pg_statistic…)
postgres
(バックエンドプロセス)
①ー2
手動ANALYZEによる
統計情報更新
①ー1
自動ANALYZEによる
統計情報更新
クライアント
パーサ
アナライザ
リライタ
プランナ
=# SELECT * FROM hoge WHERE … ;
postgres
(バックエンドプロセス)
②
統計
情報
利用
エグゼキュータ
実行計画で使用される統計情報
ユーザーに提供する統計情報
共有メモリ
③ー1
共有メモリの
情報を更新
③ー2
共有メモリから
情報を取得
(一部のビュー)
12
© 2021 NTT DATA Corporation
PostgreSQLの統計情報について
各サーバプロセス
stats collector
(統計情報コレクタ)
SQL操作
postgres
(バックエンドプロセス)
・ 収集済み統計情報ビュー
・ 動的統計情報ビュー
=# SELECT * FROM pg_stat_***
VACUUM
その他
① 統計情報コレクタにレポート
(ローカルメモリを更新)
②ー2 統計情報コレクタがローカルメモリ
の内容をファイルへ更新
②ー3
更新された統計
情報を取得
/data/pg_stat_tmp
②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求)
=# ANALYZE ;
autovacuum worker
ANALYZE
VACUUM
システムカタログ
(pg_class,
pg_statistic…)
postgres
(バックエンドプロセス)
①ー2
手動ANALYZEによる
統計情報更新
①ー1
自動ANALYZEによる
統計情報更新
クライアント
パーサ
アナライザ
リライタ
プランナ
=# SELECT * FROM hoge WHERE … ;
postgres
(バックエンドプロセス)
②
統計
情報
利用
エグゼキュータ
実行計画で使用される統計情報
ユーザーに提供する統計情報
共有メモリ
③ー1
共有メモリの
情報を更新
③ー2
共有メモリから
情報を取得
(一部のビュー)
稼働統計情報
[ファイル]
(global.stat,
db_{OID}.stat)
稼働統計情報
[ローカルメモリ]
大事なポイント
PostgreSQLで扱う統計情報は、以下に2つに分類される。
A. 実行計画で使用される統計情報(システムカタログ)
B. ユーザーに提供する統計情報(統計情報コレクタによる稼働統計情報)
13
© 2021 NTT DATA Corporation
さいごに
• PostgreSQLの統計情報の内部構造について、私主観の疑問の解消過程を紹介しました。
• 同じような疑問を持っていた方の一助になれば幸いです。
• 共有メモリベースの統計情報コレクタについて、コミュニティでディスカッションが行われているので、
キャッチアップが進んだら、次回以降のアンカンファレンスで紹介できればと思います。
© 2021 NTT DATA Corporation 14
YouTubeチャンネル “NTT DATA Tech”
技術取り組み、活用情報を中心にお届けします
https://www.youtube.com/NTTDATATech
© 2021 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。
Ad

Recommended

NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
NTT DATA OSS Professional Services
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介
NTT DATA OSS Professional Services
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

More Related Content

What's hot (20)

PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 

Similar to PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料) (17)

pg_dbms_statsの紹介
pg_dbms_statsの紹介
NTT DATA OSS Professional Services
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
Oss x user_meeting_6_postgres
Oss x user_meeting_6_postgres
Kosuke Kida
 
A Tour of PostgreSQL
A Tour of PostgreSQL
EDB
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
Chugokudb18_1
Chugokudb18_1
Kosuke Kida
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
NTT DATA OSS Professional Services
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQL
Noriyoshi Shinoda
 
10大ニュースで振り返るpg con2013
10大ニュースで振り返るpg con2013
NTT DATA OSS Professional Services
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostreSQL監査
PostreSQL監査
NTT DATA OSS Professional Services
 
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
Insight Technology, Inc.
 
Dblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-database
Toshi Harada
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
Oss x user_meeting_6_postgres
Oss x user_meeting_6_postgres
Kosuke Kida
 
A Tour of PostgreSQL
A Tour of PostgreSQL
EDB
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
PostgreSQL Unconference #26 No Error on PostgreSQL
PostgreSQL Unconference #26 No Error on PostgreSQL
Noriyoshi Shinoda
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
[B32] クイズと都市伝説から見る、ありのままのPostgreSQL by Shigeyuki Tokuhara
Insight Technology, Inc.
 
Dblt#2 do-postgres-dream-of-graph-database
Dblt#2 do-postgres-dream-of-graph-database
Toshi Harada
 
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
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
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
 
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
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
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
 
Ad

PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2021 NTT DATA Corporation PostgreSQLの統計情報について 2021年8月24日 第26回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 清野 裕貴
  • 2. 2 © 2021 NTT DATA Corporation 本講演について 講演資料は、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech
  • 3. 3 © 2021 NTT DATA Corporation 自己紹介 清野 裕貴 @NTTデータ 現在(2020.07~) PostgreSQL研究開発、社内普及展開 これまで(~2020.06) 公共系プロジェクトのPM/AP要件定義・設計の業務に従事 ※使用していたRDBMSはOracle Database 11g,12c @YukiSeino
  • 4. 4 © 2021 NTT DATA Corporation 本日の説明内容 本日は、PostgreSQL統計情報の内部構造を説明します! (一般的な統計情報関連のキーワードを理解している前提で進めます。[統計情報コレクタ、実行計画等]) 私自身が統計情報を理解していく上で躓いたポイントを中心に説明しますので、 既にPostgreSQL内部構造・統計情報への理解がプロフェッショナルな方には、 物足りない内容となってしまうこと、ご容赦ください!!
  • 5. 5 © 2021 NTT DATA Corporation PostgreSQLの統計情報について PostgreSQLの統計情報について何となく理解できたが、理解が断片的で不安。。。 統計情報 統計情報コレクタ 稼働統計情報 プランナ 実行計画 動的統計情報ビュー 収集済み統計情報ビュー PostgreSQLで扱う統計情報を一枚絵にしてみました。 ⇒感想:自分なりに各キーワードの位置づけが整理できました アナライズ pg_stat_*** pg_class pg_statistic
  • 6. 6 © 2021 NTT DATA Corporation PostgreSQLの統計情報について 各サーバプロセス stats collector (統計情報コレクタ) SQL操作 postgres (バックエンドプロセス) ・ 収集済み統計情報ビュー ・ 動的統計情報ビュー =# SELECT * FROM pg_stat_*** VACUUM その他 ① 統計情報コレクタにレポート (ローカルメモリを更新) ②ー2 統計情報コレクタがローカルメモリ の内容をファイルへ更新 ②ー3 更新された統計 情報を取得 /data/pg_stat_tmp ②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求) =# ANALYZE ; autovacuum worker ANALYZE VACUUM システムカタログ (pg_class, pg_statistic…) postgres (バックエンドプロセス) ①ー2 手動ANALYZEによる 統計情報更新 ①ー1 自動ANALYZEによる 統計情報更新 クライアント パーサ アナライザ リライタ プランナ =# SELECT * FROM hoge WHERE … ; postgres (バックエンドプロセス) ② 統計 情報 利用 エグゼキュータ 実行計画で使用される統計情報 ユーザーに提供する統計情報 共有メモリ ③ー1 共有メモリの 情報を更新 ③ー2 共有メモリから 情報を取得 (一部のビュー) 稼働統計情報 [ファイル] (global.stat, db_{OID}.stat) 稼働統計情報 [ローカルメモリ]
  • 7. 7 © 2021 NTT DATA Corporation PostgreSQLの統計情報について 実行計画で使用される統計情報(システムカタログ) ① ANALYZE等によりシステムカタログを更新 ② SQL実行時にプランナがシステムカタログ から統計情報を取得 =# ANALYZE ; autovacuum worker ANALYZE VACUUM システムカタログ (pg_class, pg_statistic…) postgres (バックエンドプロセス) ①ー2 手動ANALYZEによる 統計情報更新 ①ー1 自動ANALYZEによる 統計情報更新 クライアント パーサ アナライザ リライタ プランナ = SELECT * FROM hoge WHERE … ; postgres (バックエンドプロセス) ② 統計 情報 利用 エグゼキュータ
  • 8. 8 © 2021 NTT DATA Corporation PostgreSQLの統計情報について 実行計画で使用される統計情報(システムカタログ) プランナはANALYZEにより更新された「統計情報:システムカタログ」を使用して、実行計画を作成する。 ① ANALYZE等によりシステムカタログを更新 ② SQL実行時にプランナがシステムカタログ から統計情報を取得 =# ANALYZE ; autovacuum worker ANALYZE VACUUM システムカタログ (pg_class, pg_statistic…) postgres (バックエンドプロセス) ①ー2 手動ANALYZEによる 統計情報更新 ①ー1 自動ANALYZEによる 統計情報更新 クライアント パーサ アナライザ リライタ プランナ =# SELECT * FROM hoge WHERE … ; postgres (バックエンドプロセス) ② 統計 情報 利用 エグゼキュータ システムカタログの更新契機はANALYZEだけでなく、VACUUM や一部DDLコマンドでも更新されます。 プランナはシステムカタログだ けでなく、対象テーブルのサ イズ等も取得します
  • 9. 9 © 2021 NTT DATA Corporation PostgreSQLの統計情報について ユーザーに提供する統計情報(稼働統計情報) ① 各データベース操作により統計情報コレクタの ローカルメモリ内容を更新 ②③ 統計情報ビュー(関数)による統計情報参照 各サーバプロセス stats collector (統計情報コレクタ) SQL操作 postgres (バックエンドプロセス) ・ 収集済み統計情報ビュー ・ 動的統計情報ビュー =# SELECT * FROM pg_stat_*** VACUUM その他 ① 統計情報コレクタにレポート (ローカルメモリを更新) ②ー2 統計情報コレクタがローカルメモリ の内容をファイルへ更新 ②ー3 更新された統計 情報を取得 /data/pg_stat_tmp ②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求) 稼働統計情報 [ファイル] (global.stat, db_{OID}.stat) 稼働統計情報 [ローカルメモリ]
  • 10. 10 © 2021 NTT DATA Corporation PostgreSQLの統計情報について ユーザーに提供する統計情報(稼働統計情報) PostgreSQL利用者は統計情報コレクタにより更新された「統計情報:稼働統計情報」を確認する ① 各データベース操作により統計情報コレクタの ローカルメモリ内容を更新 ②③ 統計情報ビュー(関数)による統計情報参照 一部のビュー(pg_stat_activity)は稼働統計情報(ファイル)ではなく、共有メモリを参照する。 (統計情報コレクタを介せず、バックエンドプロセスが直接、共有メモリ内容を更新・取得する。) 稼働統計情報(テーブルの更新・挿入・削除の情報)は autovacuum(VACUUM, ANALYZE)実行のトリガ情報としても使用される。 ※間接的に実行計画で使用される統計情報(システムカタログ)に関係してくる。 各サーバプロセス stats collector (統計情報コレクタ) SQL操作 postgres (バックエンドプロセス) ・ 収集済み統計情報ビュー ・ 動的統計情報ビュー =# SELECT * FROM pg_stat_*** VACUUM その他 ① 統計情報コレクタにレポート (ローカルメモリを更新) ②ー2 統計情報コレクタがローカルメモリ の内容をファイルへ更新 ②ー3 更新された統計 情報を取得 /data/pg_stat_tmp ②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求) 共有メモリ ③ー1 共有メモリの 情報を更新 ③ー2 共有メモリから 情報を取得 (一部のビュー) 稼働統計情報 [ファイル] (global.stat, db_{OID}.stat) 稼働統計情報 [ローカルメモリ]
  • 11. 11 © 2021 NTT DATA Corporation PostgreSQLの統計情報について 各サーバプロセス stats collector (統計情報コレクタ) SQL操作 postgres (バックエンドプロセス) ・ 収集済み統計情報ビュー ・ 動的統計情報ビュー =# SELECT * FROM pg_stat_*** 稼働統計情報 [ファイル] (global.stat, db_{OID}.stat) VACUUM その他 ① 統計情報コレクタにレポート (ローカルメモリを更新) ②ー2 統計情報コレクタがローカルメモリ の内容をファイルへ更新 ②ー3 更新された統計 情報を取得 /data/pg_stat_tmp ②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求) 稼働統計情報 [ローカルメモリ] =# ANALYZE ; autovacuum worker ANALYZE VACUUM システムカタログ (pg_class, pg_statistic…) postgres (バックエンドプロセス) ①ー2 手動ANALYZEによる 統計情報更新 ①ー1 自動ANALYZEによる 統計情報更新 クライアント パーサ アナライザ リライタ プランナ =# SELECT * FROM hoge WHERE … ; postgres (バックエンドプロセス) ② 統計 情報 利用 エグゼキュータ 実行計画で使用される統計情報 ユーザーに提供する統計情報 共有メモリ ③ー1 共有メモリの 情報を更新 ③ー2 共有メモリから 情報を取得 (一部のビュー)
  • 12. 12 © 2021 NTT DATA Corporation PostgreSQLの統計情報について 各サーバプロセス stats collector (統計情報コレクタ) SQL操作 postgres (バックエンドプロセス) ・ 収集済み統計情報ビュー ・ 動的統計情報ビュー =# SELECT * FROM pg_stat_*** VACUUM その他 ① 統計情報コレクタにレポート (ローカルメモリを更新) ②ー2 統計情報コレクタがローカルメモリ の内容をファイルへ更新 ②ー3 更新された統計 情報を取得 /data/pg_stat_tmp ②ー1 統計情報コレクタに参照要求(ファイル書き込みを要求) =# ANALYZE ; autovacuum worker ANALYZE VACUUM システムカタログ (pg_class, pg_statistic…) postgres (バックエンドプロセス) ①ー2 手動ANALYZEによる 統計情報更新 ①ー1 自動ANALYZEによる 統計情報更新 クライアント パーサ アナライザ リライタ プランナ =# SELECT * FROM hoge WHERE … ; postgres (バックエンドプロセス) ② 統計 情報 利用 エグゼキュータ 実行計画で使用される統計情報 ユーザーに提供する統計情報 共有メモリ ③ー1 共有メモリの 情報を更新 ③ー2 共有メモリから 情報を取得 (一部のビュー) 稼働統計情報 [ファイル] (global.stat, db_{OID}.stat) 稼働統計情報 [ローカルメモリ] 大事なポイント PostgreSQLで扱う統計情報は、以下に2つに分類される。 A. 実行計画で使用される統計情報(システムカタログ) B. ユーザーに提供する統計情報(統計情報コレクタによる稼働統計情報)
  • 13. 13 © 2021 NTT DATA Corporation さいごに • PostgreSQLの統計情報の内部構造について、私主観の疑問の解消過程を紹介しました。 • 同じような疑問を持っていた方の一助になれば幸いです。 • 共有メモリベースの統計情報コレクタについて、コミュニティでディスカッションが行われているので、 キャッチアップが進んだら、次回以降のアンカンファレンスで紹介できればと思います。
  • 14. © 2021 NTT DATA Corporation 14 YouTubeチャンネル “NTT DATA Tech” 技術取り組み、活用情報を中心にお届けします https://www.youtube.com/NTTDATATech
  • 15. © 2021 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。

Editor's Notes

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