Suche senden
Hochladen
PostgreSQL Internals - Buffer Management
•
1 gefällt mir
•
1,617 views
Satoshi Nagayasu
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 24
Empfohlen
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
Naoki Okino
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
Yoshiaki Shibutani
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
データベースのお話
データベースのお話
Hidekazu Tanaka
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
Empfohlen
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
Naoki Okino
JVM上で動くPython処理系実装のススメ
JVM上で動くPython処理系実装のススメ
Yoshiaki Shibutani
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
R以外の研究ツール
R以外の研究ツール
弘毅 露崎
データベースのお話
データベースのお話
Hidekazu Tanaka
CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset
moto2g
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
Oracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始め
Satoshi Nagayasu
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017
Satoshi Nagayasu
A Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was born
Satoshi Nagayasu
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
Satoshi Nagayasu
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
Satoshi Nagayasu
[WIP] pgDay Asia 2016
[WIP] pgDay Asia 2016
Satoshi Nagayasu
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
Satoshi Nagayasu
PostgreSQL 9.4
PostgreSQL 9.4
Satoshi Nagayasu
PostgreSQL Community in Japan
PostgreSQL Community in Japan
Satoshi Nagayasu
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
Satoshi Nagayasu
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論
Satoshi Nagayasu
統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定
Satoshi Nagayasu
PgAccelerator
PgAccelerator
Satoshi Nagayasu
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価
Satoshi Nagayasu
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Weitere ähnliche Inhalte
Mehr von Satoshi Nagayasu
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
Oracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始め
Satoshi Nagayasu
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
Satoshi Nagayasu
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017
Satoshi Nagayasu
A Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was born
Satoshi Nagayasu
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
Satoshi Nagayasu
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
Satoshi Nagayasu
[WIP] pgDay Asia 2016
[WIP] pgDay Asia 2016
Satoshi Nagayasu
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
Satoshi Nagayasu
PostgreSQL 9.4
PostgreSQL 9.4
Satoshi Nagayasu
PostgreSQL Community in Japan
PostgreSQL Community in Japan
Satoshi Nagayasu
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
Satoshi Nagayasu
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論
Satoshi Nagayasu
統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定
Satoshi Nagayasu
PgAccelerator
PgAccelerator
Satoshi Nagayasu
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価
Satoshi Nagayasu
Mehr von Satoshi Nagayasu
(20)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Oracle対応アプリケーションのDockerize事始め
Oracle対応アプリケーションのDockerize事始め
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
pgDay Asia 2016 & 2017
pgDay Asia 2016 & 2017
A Story Behind the Conference, or How pgDay Asia was born
A Story Behind the Conference, or How pgDay Asia was born
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
データベースエンジニアがデータヘルスの2年間で見たもの(仮)
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
PostgreSQL 9.4, 9.5 and Beyond @ COSCUP 2015 Taipei
[WIP] pgDay Asia 2016
[WIP] pgDay Asia 2016
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4 and Beyond @ FOSSASIA 2015 Singapore
PostgreSQL 9.4
PostgreSQL 9.4
PostgreSQL Community in Japan
PostgreSQL Community in Japan
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
海外の技術カンファレンスに行こう! Let’s go tech conferences overseas!
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
映画「マネーボール」に学ぶデータ分析と組織行動論
映画「マネーボール」に学ぶデータ分析と組織行動論
統計勉強会 分割表とカイ二乗検定
統計勉強会 分割表とカイ二乗検定
PgAccelerator
PgAccelerator
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
遊休リソースを用いた相同性検索処理の並列化とその評価
遊休リソースを用いた相同性検索処理の並列化とその評価
Kürzlich hochgeladen
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Kürzlich hochgeladen
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
PostgreSQL Internals - Buffer Management
1.
PostgreSQL Internals - Buffer
Management - Satoshi Nagayasu snaga@snaga.org
2.
bufmgr関連データ • 1つ以上のバックエンドによって参照されて
いるバッファ(プール)のハッシュテーブル – SharedBufHash • どこからも参照されていない(されなくなっ た)バッファのリスト(環状リスト) – SharedFreeList • いずれも共有メモリ内の領域 2003/06/20 Satoshi Nagayasu
3.
BufferDescriptor • BufferDescriptorメンバ(抜粋)
– Buffer freeNext, freePrev – SHMEM_OFFSET data – int buf_id – BufFlags flags – unsigned refcount 2003/06/20 Satoshi Nagayasu
4.
初期化直後のBufferDescriptorリスト(NBuffers=8)
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev InitBufferPool() InitFreeList() NBuffers(GUC)+1のBufferDescriptorを確保する。 最後の1個を空きバッファリストの先頭要素とする。 freeNextを辿ると、「8→1→2→3→4→5→6→7→0→8」 2003/06/20 Satoshi Nagayasu
5.
ディスクからバッファへの読込み • バッファに読み込むディスクブロックの指定
– BufferTag • fileNode(テーブルOID)とブロック番号 • バッファプールの中に存在するか? – BufTableLookup() • BufferPoolのHashテーブルを検索 • 存在しなければディスクから読み込み – GetFreeBuffer() & smgrread() 2003/06/20 Satoshi Nagayasu
6.
ディスクからバッファへの読込み • ReadBuffer() /
ReadBufferInternal() – BufferAlloc() • BufTableLookup() でHashテーブルを検索 • 見つからなければ GetFreeBuffer() でバッファ取得 • Hashテーブルに追加 – Hash 内にあれば BufferDescriptorGetBuffer() – 無ければ smgrread() 2003/06/20 Satoshi Nagayasu
7.
GetFreeBuffer()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev buf = &(BufferDescriptors[SharedFreeList->freeNext]); 2003/06/20 Satoshi Nagayasu
8.
GetFreeBuffer()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev BufferDescriptors[buf->freeNext].freePrev = buf->freePrev; 2003/06/20 Satoshi Nagayasu
9.
GetFreeBuffer()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev BufferDescriptors[buf->freePrev].freeNext = buf->freeNext; 2003/06/20 Satoshi Nagayasu
10.
GetFreeBuffer()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev buf->freeNext = buf->freePrev = INVALID_DESCRIPTOR; 2003/06/20 Satoshi Nagayasu
11.
SharedBufHash • ハッシュテーブルの操作(buf_table.c)
– BufTableInsert() – BufTableDelete() – BufTableLookup() 2003/06/20 Satoshi Nagayasu
12.
PinBuffer()/UnpinBuffer() • PrivateRefCount (ローカル変数)
– ひとつのバックエンド内で、そのバッファが何 回参照(Pin)されているか • BufferDesc->refcount (共有メモリ内変数) – いくつのバックエンドにそのバッファが参照さ れているか(複数バックエンド間での話)。 2003/06/20 Satoshi Nagayasu
13.
SharedFreeList • バッファを取得する場合には、freelistの先
頭(SharedFreeListの次)から取る – GetFreeBuffer() • バッファを開放する場合には、freelistの最 後尾(SharedFreeListの前)に追加 – BufferDesc->refcountが0になると、freeListに 追加される。 – UnpinBuffer(), AddBufferToFreeList() 2003/06/20 Satoshi Nagayasu
14.
SharedFreeList • 有効なブロックが読み込まれているバッ
ファは、ハッシュテーブルに登録される • どのバックエンドにも参照されていないバッ ファは、freelistの最後尾に登録される • freelistから取り出したものが、以前使われ ていたdirtyなバッファの場合は、前のデー タをまずディスクにwriteしてから使われる 2003/06/20 Satoshi Nagayasu
15.
AddBufferToFreeList ()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev bf->freePrev = SharedFreeList->FreePrev; 2003/06/20 Satoshi Nagayasu
16.
AddBufferToFreeList ()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev bf->freeNext = Free_List_Descriptor; 2003/06/20 Satoshi Nagayasu
17.
AddBufferToFreeList ()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev BufferDescriptors[bf->freeNext].freePrev = bf->buf_id; 2003/06/20 Satoshi Nagayasu
18.
AddBufferToFreeList ()
freeNext freeNext freeNext freeNext freeNext freeNext freeNext freeNext SharedFreeList 0 1 2 3 4 5 6 7 8 freePrev freePrev freePrev freePrev freePrev freePrev freePrev freePrev BufferDescriptors[bf->freePrev].freeNext = bf->buf_id; 2003/06/20 Satoshi Nagayasu
19.
bufmgrイメージ • ブロックが読み込まれてるバッファは
SharedBufHashに • 参照されなくなったバッファはSharedFreeList に • 両方に存在することも shmem SharedBufHash postgres postgres SharedFreeList Buffer postgres Buffer Buffer 2003/06/20 Buffer postgres Nagayasu Satoshi
20.
bufmgr - InitFreeList() •
最初はSharedFreeListにある SharedFreeList SharedBufHash Buffer 2003/06/20 Satoshi Nagayasu
21.
bufmgr - GetFreeBuffer() •
ディスクからブロックが読み込まれると、 SharedFreeListの先頭から取り出され、 SharedBufHashに登録される (GetFreeBuffer()&BufTableInsert())。 SharedFreeList SharedBufHash Buffer 2003/06/20 Satoshi Nagayasu
22.
bufmgr - UnpinBuffer() •
どこからも参照されなくなる(refcount==0)と、 SharedFreeListの最後尾に登録される。この 段階では、SharedBufHashの中でも見つかる し、SharedFreeListにも含まれる。 SharedFreeList SharedBufHash Buffer 参照されてない。でもdirty(かもしれない)。 2003/06/20 Satoshi Nagayasu
23.
bufmgr - PinBuffer() •
再度参照されると、SharedFreeListから切り 離される。 SharedFreeList SharedBufHash Buffer 2003/06/20 Satoshi Nagayasu
24.
bufmgr - BufTableDelete() •
そのまま参照されずに、再度別ブロックの バッファとして取得されると、以前のdirtyな データをディスクに反映させて、 SharedBufHashから一旦削除される(新しい ブロックとして再登録)。 SharedFreeList SharedBufHash Buffer 2003/06/20 Satoshi Nagayasu