SlideShare a Scribd company logo
1 of 11
Download to read offline
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 1
pgstattuple2:
デッドタプル推定のための統計的手法
2013/7/13
アップタイム・テクノロジーズ
永安 悟史
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 2
モチベーション
• PostgreSQLはVACUUMによるメンテナンスが必要
• その契機のためにpgstattuple/pgstatindexによる調査が必
要
• データ量が増大する昨今、pgstattuple/pgstatindexの発生さ
せるI/Oは無視できない
• 調査によるパフォーマンスインパクトを減らしたい
統計的手法の検討
• 本当にすべてのブロックをスキャンする必要があるのか?
• ブロックサンプリングの可能性を検討したい
• Robert Haasにも「それは便利だと思う」とコメントされた
– Re: [RFC] pgstattuple/pgstatindex enhancement
– http://bit.ly/18HdrIH
• 最近、統計を勉強してる
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 3
デッドタプル(削除済みタプル)の推定
• デッドタプルの割合を推定したい(0~100%)
• ランダムにある程度のブロックをサンプリングする
• サンプルからテーブル全体のデッドタプル率を推定する
• 誤差をどう考えるか、どの程度サンプリングすればよいか
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 4
統計的誤差
• サンプリングを行って母集団全体の推定を行うと、そこには
統計的誤差が生じる
• 誤差を許容範囲内に収めるようなサンプリングを行う必要が
ある
• サンプルから推定した母平均は、95%の確率で「標本平均
±標準誤差×1.96」に収まる
• 誤差は「母集団の数N、標本サイズn、標本標準偏差s」で決
まる
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 5
標準誤差SE =
標準誤差 – Wikipedia
http://ja.wikipedia.org/wiki/標準誤差
サンプルサイズと統計的誤差
• テーブル100万ブロック、デッドタプル平均20%、標準偏差
20%の場合
– 3000ブロックサンプルすると、誤差は±3.6%程度
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 6
pgstattuple2
• pgstattuple2(regclass)
– 3,000ブロック(=24MB)をランダムにサンプリング
• 使い方はpgstattuple()と同等
– 標準誤差の数値をNOTICEとして出力する
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 7
postgres=# select * from pgstattuple2('pgbench_accounts');
NOTICE: pgstattuple2: SE tuple_count 1297.31, tuple_len 156974.32, dead_tuple_count
185.78, dead_tuple_len 22479.30, free_space 162814.40
-[ RECORD 1 ]------+-----------
table_len | 1394712576
tuple_count | 10002023
tuple_len | 1210244812
tuple_percent | 86.77
dead_tuple_count | 171785
dead_tuple_len | 20786018
dead_tuple_percent | 1.49
free_space | 21401483
free_percent | 1.53
実測結果の比較
• 1.3GB(166,559ブロック)のうち、約1.8%をサンプリング
– 推定精度は実用上十分と思われる。
– 実行時間は1/100程度(1,600ms→20ms)
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 8
※SF=100, CL=32, TX=5000, autovacuum=off
Now available on Github! 
• https://github.com/snaga/postgres
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 9
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 10
Q&A
Copyright (c) 2013 Uptime Technologies, LLC. All rights reserved. 11
【お問い合わせ先】
アップタイム・テクノロジーズ合同会社
担当:永安
E-mail: snaga@uptime.jp
Web: http://www.uptime.jp/

More Related Content

What's hot

あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)Uptime Technologies LLC (JP)
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会Shigeru Hanada
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)kasaharatt
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13Uptime Technologies LLC (JP)
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャKohei KaiGai
 
JTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontlineJTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontlineHaruka Takatsuka
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Toshi Harada
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門Yoshiyuki Asaba
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeToshi Harada
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 

What's hot (20)

あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#135ステップで始めるPostgreSQLレプリケーション@hbstudy#13
5ステップで始めるPostgreSQLレプリケーション@hbstudy#13
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
JTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontlineJTF2021w F3 postgresql frontline
JTF2021w F3 postgresql frontline
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
 
Osc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatypeOsc2015 hokkaido postgresql-semi-stuructured-datatype
Osc2015 hokkaido postgresql-semi-stuructured-datatype
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 

pgstattuple2: デッドタプル推定のための統計的手法