SlideShare a Scribd company logo
Copyright © 2015 NTT DATA Corporation
2015年5月30日
株式会社 NTTデータ
澤田雅彦
XID周回問題に潜む別の問題
PostgreSQLアンカンファレンス@Tokyo
2Copyright © 2015 NTT DATA Corporation
自己紹介
澤田 雅彦 @sawada_masahiko
NTTデータ 基盤システム事業本部
• PostgreSQLの技術開発、技術支援に従事
• 今年PGCon行きます
3Copyright © 2015 NTT DATA Corporation
INDEX
• XID周回とXID周回問題
• XID周回問題を防ぐ
• XID周回問題に潜む”別の問題”
• 解決に向けて
4Copyright © 2015 NTT DATA Corporation
XID周回とXID周回問題
• 約40億トランザクション経過すると0に戻る(→XID周回)
• トランザクションID(XID)は4Byte
• ”過去の見えていたデータ”が、見えなくなってしまう(→XID周回問題)
• 約20億トランザクション経過すると発生。
• 例えば、200TPSのシステムだと、約115日で訪れる→年に3回発生
XID=100
過去
(見える)
未来
(見えない)
XID=100
過去
(見える)
未来
(見えない)
見えない!
XID=100
過去
(見える)
未来
(見えない)
INSERT。
もちろん見える。
まだ見える。
5Copyright © 2015 NTT DATA Corporation
XID周回問題を防ぐ
• タプルを凍結(FREEZE)
• FREEZEされたタプルはどのXIDよりも古い
• FREEZEする契機
• VACUUM/auto-vacuum/CLUSTER/VACUUM FULL
• auto-vacuumがXID周回問題防止VACUUMを自動で実施
• (残り1000万トランザクションでWARNING)
• (残り100万トランザクションでXIDの払い出しを禁止)
XID=100
過去
(見える)
未来
(見えない)
XID=100
FREEZE
過去
(見える)
未来
(見えない)
XID=100
FREEZE
過去
(見える)
未来
(見えない)
FREEZEされてるので
見える!
INSERT。
もちろん見える。
まだ見える。
FREEZE処理実施。
6Copyright © 2015 NTT DATA Corporation
XID周回問題は防げる。が、
• XID周回防止VACUUMはテーブルのフルスキャンが必要
• これは、更新が全くないテーブルでも必要
→ PostgreSQLは定期的にテーブルのフルスキャンが発生することになる
XID周回問題に潜む別の問題は、
7Copyright © 2015 NTT DATA Corporation
XID周回問題は防げる。が、
• XID周回防止VACUUMはテーブルのフルスキャンが必要
• これは、更新が全くないテーブルでも必要
→ PostgreSQLは定期的にテーブルのフルスキャンが発生することになる
XID周回問題に潜む別の問題は、
”XID周回防止VACUUMに伴う大量のI/O”
ところで、なぜXID周回防止VACUUMはテーブルをフルスキャンする必要がある?
8Copyright © 2015 NTT DATA Corporation
blkno lp vm_info t_xmin
0 1 BIT 60(FREEZE)
0 2 BIT 151
1 1 50(FREEZE)
1 2 52(FREEZE)
2 1 BIT 100
2 2 BIT 100
2 3 BIT 101
3 1 90(FREEZE)
3 2 101
4 1 BIT 120(FREEZE)
なぜテーブルをフルスキャンする必要がある?
通常のVACUUMはVisibility Mapにより飛び飛びに実行されることで、
テーブルのrelfrozenxidを更新できないため。
• pg_class.relfrozenxid : FREEZEされていない最小のXID
• XID周回防止VACUUMの必要性は主にrelfrozenxidの値で判断
relfrozenxid
100
: スキップされる
ブロック
9Copyright © 2015 NTT DATA Corporation
解決に向けて
CF9.6でパッチ出してます(★の所)
• XIDを8Byteにする
• XIDをLSNを結びつける
• ★Read-Only Table
• ★すべてのタプルがFREEZEされたページを覚えておく
1Copyright © 2015 NTT DATA Corporation
VisibilityMapにビットを追加
• これまでは、VMは1ページ当たり1ビットで管理
• ページ内のタプルが全てのトランザクションから見える(all-visible)→ビットを立てる
• ビットが立っているページはVACUUM(ゴミ掃除)不要
• VMに1ビットを追加する
• つまり1ページ当たり2ビット(all-visible, all-frozen)で管理。CLOGみたいな感じ。
• ページ内のタプルが全てFREEZEされている(all-frozen)→ビットを立てる
• ビットが立っているページはVACUUM(タプルFREEZE)不要
• VACUUM(タプルFREEZE)でページをスキップしてもrelfrozenxidを更新できる
9.6ではどちらのVACUUMも高速になる!かも!
1Copyright © 2015 NTT DATA Corporation
まとめ
• PostgreSQLは更新のないテーブルにも、
定期的にフルスキャン(VACUUM)が走ります。
• 計画的なVACUUM FREEZEである程度防止できる
• 9.6で問題が解決するかも
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
Please Review the Patch.
Ad

More Related Content

What's hot (20)

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の運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回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
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
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
 
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
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
Akio Ishida
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
NTT DATA OSS Professional Services
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
押さえておきたい、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
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 
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
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回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
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
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
 
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
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
Akio Ishida
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
押さえておきたい、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
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
 

Similar to PostgreSQL: XID周回問題に潜む別の問題 (20)

ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)
aitc_jp
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
Wataru Fukatsu
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713
Takehiro Kudou
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
griddb
 
Enterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashiEnterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashi
Tomohiro Igarashi
 
ベアメタルプロビジョニング(Ironic)について
ベアメタルプロビジョニング(Ironic)についてベアメタルプロビジョニング(Ironic)について
ベアメタルプロビジョニング(Ironic)について
Mitsuhiro SHIGEMATSU
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb, Inc.
 
Orb oracle
Orb oracleOrb oracle
Orb oracle
Masa Nakatsu
 
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
griddb
 
サーバーからデスクトップへ広がる仮想化技術の活用法
サーバーからデスクトップへ広がる仮想化技術の活用法サーバーからデスクトップへ広がる仮想化技術の活用法
サーバーからデスクトップへ広がる仮想化技術の活用法
VirtualTech Japan Inc.
 
OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告
Kota Tsuyuzaki
 
Jawsug kyoso
Jawsug kyosoJawsug kyoso
Jawsug kyoso
Ryosuke Izumi
 
180731 JAWS UG京都 KYOSO part
180731 JAWS UG京都 KYOSO part180731 JAWS UG京都 KYOSO part
180731 JAWS UG京都 KYOSO part
daichi goto
 
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
Insight Technology, Inc.
 
CDH4->5 update苦労話
CDH4->5 update苦労話CDH4->5 update苦労話
CDH4->5 update苦労話
Yu Yamada
 
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
Game Tools & Middleware Forum
 
Ti db demo
Ti db demoTi db demo
Ti db demo
Akio Mitobe
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
NTT DATA OSS Professional Services
 
【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介
CLOUDIAN KK
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
griddb
 
ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)ソフトウエアジャパン2017 IT Forum AITC(6)
ソフトウエアジャパン2017 IT Forum AITC(6)
aitc_jp
 
Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)Orb dlt technical_overview(特許情報なし)
Orb dlt technical_overview(特許情報なし)
Wataru Fukatsu
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713
Takehiro Kudou
 
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
【GridDB入門】 IoT、そしてサイバー・フィジカル・システムを支える オープンソースデータベース GridDB ~ こだわりの理由と実現方法のポイント
griddb
 
Enterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashiEnterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashi
Tomohiro Igarashi
 
ベアメタルプロビジョニング(Ironic)について
ベアメタルプロビジョニング(Ironic)についてベアメタルプロビジョニング(Ironic)について
ベアメタルプロビジョニング(Ironic)について
Mitsuhiro SHIGEMATSU
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
Orb, Inc.
 
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
もうSQLとNoSQLを選ぶ必要はない!?~両者を備えたスケールアウトデータベースGridDB~
griddb
 
サーバーからデスクトップへ広がる仮想化技術の活用法
サーバーからデスクトップへ広がる仮想化技術の活用法サーバーからデスクトップへ広がる仮想化技術の活用法
サーバーからデスクトップへ広がる仮想化技術の活用法
VirtualTech Japan Inc.
 
OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告
Kota Tsuyuzaki
 
180731 JAWS UG京都 KYOSO part
180731 JAWS UG京都 KYOSO part180731 JAWS UG京都 KYOSO part
180731 JAWS UG京都 KYOSO part
daichi goto
 
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
20150630_データ分析に最適な基盤とは? -コスト/スピードでビジネスバリューを得るために- by 株式会社インサイトテクノロジー CTO 石川雅也
Insight Technology, Inc.
 
CDH4->5 update苦労話
CDH4->5 update苦労話CDH4->5 update苦労話
CDH4->5 update苦労話
Yu Yamada
 
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
GTMF 2015: ゲーム分析プラットフォームとしてのトレジャーデータサービス | トレジャーデータ株式会社
Game Tools & Middleware Forum
 
【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介
CLOUDIAN KK
 
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
オープンソースデータベース GridDB ~ なぜ いま、データベースを開発したのか?その理由とGridDBの概要紹介 ~
griddb
 
Ad

More from NTT DATA OSS Professional Services (20)

Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
NTT DATA OSS Professional Services
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
NTT DATA OSS Professional Services
 
HDFS Router-based federation
HDFS Router-based federationHDFS Router-based federation
HDFS Router-based federation
NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
NTT DATA OSS Professional Services
 
Distributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystemDistributed data stores in Hadoop ecosystem
Distributed data stores in Hadoop ecosystem
NTT DATA OSS Professional Services
 
Structured Streaming - The Internal -
Structured Streaming - The Internal -Structured Streaming - The Internal -
Structured Streaming - The Internal -
NTT DATA OSS Professional Services
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
NTT DATA OSS Professional Services
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
NTT DATA OSS Professional Services
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
NTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
NTT DATA OSS Professional Services
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
NTT DATA OSS Professional Services
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
 
Application of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jpApplication of postgre sql to large social infrastructure jp
Application of postgre sql to large social infrastructure jp
NTT DATA OSS Professional Services
 
Application of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructureApplication of postgre sql to large social infrastructure
Application of postgre sql to large social infrastructure
NTT DATA OSS Professional Services
 
Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)Apache Hadoop 2.8.0 の新機能 (抜粋)
Apache Hadoop 2.8.0 の新機能 (抜粋)
NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
NTT DATA OSS Professional Services
 
Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力Global Top 5 を目指す NTT DATA の確かで意外な技術力
Global Top 5 を目指す NTT DATA の確かで意外な技術力
NTT DATA OSS Professional Services
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイントPostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
NTT DATA OSS Professional Services
 
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~データ活用をもっともっと円滑に!~データ処理・分析基盤編を少しだけ~
データ活用をもっともっと円滑に! ~データ処理・分析基盤編を少しだけ~
NTT DATA OSS Professional Services
 
商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと商用ミドルウェアのPuppet化で気を付けたい5つのこと
商用ミドルウェアのPuppet化で気を付けたい5つのこと
NTT DATA OSS Professional Services
 
Ad

PostgreSQL: XID周回問題に潜む別の問題

  • 1. Copyright © 2015 NTT DATA Corporation 2015年5月30日 株式会社 NTTデータ 澤田雅彦 XID周回問題に潜む別の問題 PostgreSQLアンカンファレンス@Tokyo
  • 2. 2Copyright © 2015 NTT DATA Corporation 自己紹介 澤田 雅彦 @sawada_masahiko NTTデータ 基盤システム事業本部 • PostgreSQLの技術開発、技術支援に従事 • 今年PGCon行きます
  • 3. 3Copyright © 2015 NTT DATA Corporation INDEX • XID周回とXID周回問題 • XID周回問題を防ぐ • XID周回問題に潜む”別の問題” • 解決に向けて
  • 4. 4Copyright © 2015 NTT DATA Corporation XID周回とXID周回問題 • 約40億トランザクション経過すると0に戻る(→XID周回) • トランザクションID(XID)は4Byte • ”過去の見えていたデータ”が、見えなくなってしまう(→XID周回問題) • 約20億トランザクション経過すると発生。 • 例えば、200TPSのシステムだと、約115日で訪れる→年に3回発生 XID=100 過去 (見える) 未来 (見えない) XID=100 過去 (見える) 未来 (見えない) 見えない! XID=100 過去 (見える) 未来 (見えない) INSERT。 もちろん見える。 まだ見える。
  • 5. 5Copyright © 2015 NTT DATA Corporation XID周回問題を防ぐ • タプルを凍結(FREEZE) • FREEZEされたタプルはどのXIDよりも古い • FREEZEする契機 • VACUUM/auto-vacuum/CLUSTER/VACUUM FULL • auto-vacuumがXID周回問題防止VACUUMを自動で実施 • (残り1000万トランザクションでWARNING) • (残り100万トランザクションでXIDの払い出しを禁止) XID=100 過去 (見える) 未来 (見えない) XID=100 FREEZE 過去 (見える) 未来 (見えない) XID=100 FREEZE 過去 (見える) 未来 (見えない) FREEZEされてるので 見える! INSERT。 もちろん見える。 まだ見える。 FREEZE処理実施。
  • 6. 6Copyright © 2015 NTT DATA Corporation XID周回問題は防げる。が、 • XID周回防止VACUUMはテーブルのフルスキャンが必要 • これは、更新が全くないテーブルでも必要 → PostgreSQLは定期的にテーブルのフルスキャンが発生することになる XID周回問題に潜む別の問題は、
  • 7. 7Copyright © 2015 NTT DATA Corporation XID周回問題は防げる。が、 • XID周回防止VACUUMはテーブルのフルスキャンが必要 • これは、更新が全くないテーブルでも必要 → PostgreSQLは定期的にテーブルのフルスキャンが発生することになる XID周回問題に潜む別の問題は、 ”XID周回防止VACUUMに伴う大量のI/O” ところで、なぜXID周回防止VACUUMはテーブルをフルスキャンする必要がある?
  • 8. 8Copyright © 2015 NTT DATA Corporation blkno lp vm_info t_xmin 0 1 BIT 60(FREEZE) 0 2 BIT 151 1 1 50(FREEZE) 1 2 52(FREEZE) 2 1 BIT 100 2 2 BIT 100 2 3 BIT 101 3 1 90(FREEZE) 3 2 101 4 1 BIT 120(FREEZE) なぜテーブルをフルスキャンする必要がある? 通常のVACUUMはVisibility Mapにより飛び飛びに実行されることで、 テーブルのrelfrozenxidを更新できないため。 • pg_class.relfrozenxid : FREEZEされていない最小のXID • XID周回防止VACUUMの必要性は主にrelfrozenxidの値で判断 relfrozenxid 100 : スキップされる ブロック
  • 9. 9Copyright © 2015 NTT DATA Corporation 解決に向けて CF9.6でパッチ出してます(★の所) • XIDを8Byteにする • XIDをLSNを結びつける • ★Read-Only Table • ★すべてのタプルがFREEZEされたページを覚えておく
  • 10. 1Copyright © 2015 NTT DATA Corporation VisibilityMapにビットを追加 • これまでは、VMは1ページ当たり1ビットで管理 • ページ内のタプルが全てのトランザクションから見える(all-visible)→ビットを立てる • ビットが立っているページはVACUUM(ゴミ掃除)不要 • VMに1ビットを追加する • つまり1ページ当たり2ビット(all-visible, all-frozen)で管理。CLOGみたいな感じ。 • ページ内のタプルが全てFREEZEされている(all-frozen)→ビットを立てる • ビットが立っているページはVACUUM(タプルFREEZE)不要 • VACUUM(タプルFREEZE)でページをスキップしてもrelfrozenxidを更新できる 9.6ではどちらのVACUUMも高速になる!かも!
  • 11. 1Copyright © 2015 NTT DATA Corporation まとめ • PostgreSQLは更新のないテーブルにも、 定期的にフルスキャン(VACUUM)が走ります。 • 計画的なVACUUM FREEZEである程度防止できる • 9.6で問題が解決するかも
  • 12. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation Please Review the Patch.