SlideShare a Scribd company logo
より深く知るオプティマイザと そのチューニング 
東京大学生産技術研究所喜連川研究室 
早水悠登川道亮治 
2014/12/05 
PostgreSQLカンファレンス2014 @ 品川AP
ブラックボックスの役割 
2014/12/04 2 
ユーザの”解放”
ブラックボックスと解放 
機能のインターフェースの抽象化 
•“どうやるか” からユーザを解放 
•“やりたいこと” に集中できる 
2014/12/04 3 
リレーショナルデータベースシステム 
•データ処理のブラックボックス
データ処理におけるユーザ解放の歩み 
•アナログ計算器:アンティキティラ島の機械(紀元 前150-100年) など 
•脳内の演算実行からの解放 
•自動計算機械:シッカートの計算機(1623) など 
•演算の実行操作からの解放 
images by Wikimedia commons
データ処理におけるユーザ解放の歩み 
•データ記録の機械化:Tabulating Machine (1840) な ど 
•データ読み書き作業からの解放 
•チューリング機械・電子計算機:ENIAC(1946) など 
•処理手順からの解放 
(cont.) 
images by Wikimedia commons
データ処理におけるユーザ解放の歩み 
•プログラミング言語:FORTRAN(1957), ALGOL58(1958) など 
•機械語からの解放 
•トランザクション処理:SABRE(1960) など 
•データ不整合からの解放 
•リレーショナルモデル:Ingres(1974), System R(1974) など 
•物理的なデータ管理・データ処理方法からの解放 
(cont.)
リレーショナル以前 
• どこにデータがあるか 
• どの順序で処理するか 
• どの方法で処理するか 
2014/12/04 
ユーザナビゲータ 
リレーショナル 
データベース 
• 論理的データと物理的データの分離 
• リレーション・タプル 
• 物理的データ編成は不可視 
• “ほしいデータ”を宣言的に記述 
• データ処理の順序や方法からの解放 
DEPT 
EMP 
PROJ
論理と物理の溝を埋める 
SELECT * FROM DEPT D, EMP E 
WHERE E.D_ID= D.IDAND ... 
•アクセス方式 
•シーケンシャル、索引、・・・ 
•結合方式 
•Nested Loop, Hash, Sort-merge,・・・ 
•集約演算・ソーティング戦略 
•利用するメモリ量・一時ファイル容量 
•・・・ 
クエリオプティマイザ 
リレーショナルデータベースの 
Key enabler
活かすも殺すもオプティマイザ次第 
9 
オプティマイザの理解がリレーショナル 
データベース活用の底力 
進化し続けるテクノロジ
エンジニアの価値 =ブラックボックスの蓋を開ける 
2014/12/04 10
より深く知るオプティマイザ 
2014/12/04 11
クエリ最適化 
与えられたクエリから 
最適なクエリ実行プランを生成 
■“最適”とは? 
•クエリ実行時間が短い 
•系全体のスループットが高い 
•消費電力が低い 
•ボスのクエリだけ最高速 
2014/12/04 12 
など
最適化の枠組み 
• 実行プランのコスト計算式(コストモデル)を設計 
• 最適な実行プランの探索 
• 実行プラン候補の列挙コスト最小のプラン選択 
2014/12/04 13 
コストベース最適化System R (1976) 〜 
コスト: 最適性の指標 
• ≒ 実行時間 
実行時間を見積もる 
コストモデル
Ex) SELECT * FROM EMPWHERE EMP.ID < x 
14 
プラン1: Seq. Scan 
プラン2: Index Scan 
I/Oページ量= (一定) 
x 
I/Oページ量∝x 
I/Oページ量
コストモデル 
クエリ処理を単位処理に分解 
→ ページI/O(seq., random), 1タプル処理, オペレータ実 行, ・・・ 
単位処理の単価と回数によってコストを記述 
2014/12/04 15 
シーケンシャルI/O 
ランダムI/O 
1タプルCPU演算
コストモデル 
単位処理の単価=ハードウェアの特性 
PostgreSQLの場合 
•シーケンシャルI/Oseq_page_cost 
•ランダムI/Orandom_page_cost 
•1タプル処理cpu_tuple_cost 
•1索引タプル処理cpu_index_tuple_cost 
•1回のオペレータ処理cpu_operator_cost 
2014/12/04 16 
オプティマイザのチューニング可能ポイント
コストモデル 
単位処理の回数 
•実行プランやデータ量・分布により変化 
•統計情報を用いた見積り 
•実行プラン毎の計算方法 PostgreSQLの場合 
•SeqScan 
•IndexScan 
•IndexOnlyScan 
•NestLoopJoin 
•HashJoin 
•・・・ 
2014/12/04 17
of SeqScan 
コスト係数 
•関数(演算子)(pg_proc.procostに登録) 
•基本的にコスト係数= 1.0:=, <, >, <=, >=, like, regexp系, ・・・ 
•例外的なもの:obj_description, schema_to_xmlなど 
•ANY / ALL:コスト係数= (演算コスト係数)×(行数見積)×0.5 
•その他文字列を介した型変換、サブプラン等々・・・ 18 
= (テーブルのページ数) 
= (テーブルのタプル数) 
= #qual_operator 
= (タプル数) ×(条件Aコスト係数) 
+ (タプル数) ×(条件Bコスト係数) 
+ ・・・ 
統計情報 
・・・WHERE ANDAND ・・・ 
A 
B 
選択条件(Qual)での 
オペレータ評価回数
of IndexScan 
(A) B+木を下るCPUコスト 
(B) リーフページの索引エントリ走査コスト 
(C) リーフページのI/Oコスト 
(D) テーブルページのI/Oコスト 
(E) タプル走査のCPUコスト 
2014/12/04 19
of IndexScan 
(A) B+木を下るCPUコスト 
(B) リーフページの索引エントリ走査コスト 
2014/12/04 20 
+= log2(#index_tuples) 
ルート付近のB+木ページはI/Oコスト無し 
・・・ほぼバッファプールにキャッシュされている 
+= #qual_operator × #leaf_pages × σ 
選択率σ 
統計情報のヒストグラムやMCVな 
どから見積り
of IndexScan 
(C) I/Oコスト 
索引ページへのI/O 
2014/12/04 21 
+= Y(effective_cache_size, #leaf_pages) 
Mackertand Lohman関数(Yao 関数) 
バッファキャッシュのヒット率を考慮したI/O 回数見積り 
選択率σ
of IndexScan 
(D) テーブルページへのI/Oコスト 
(E) テーブルページ走査CPUコスト 
・タプル数を選択率σから見積り 
・各タプルのコストはSeqScanの場合と同様 
2014/12/04 22 
+= α2 × #match_pages 
索引エントリとテーブルエントリの相関係数α 
α = 0 : ランダムI/O α = 1 : シーケンシャルI/O 
+= (1-α2) × #match_tuples
of NestLoopJoin 
2014/12/04 23 
R⨝S 
Scan R 
r2 
r1 
r3 
r4 
Scan Swith 
r1 
s1 
s2 
s3 
ReScanSwith 
r2 
s1 
s2 
s3 
outer 
inner
of NestLoopJoin 
•#outer_tuples= 1 の場合 
2014/12/04 24 
R⨝S 
Scan R 
r1 
Scan Swith 
r1 
s1 
s2 
s3 
outer 
inner 
Cost = Cost(outer) + Cost(inner) + 
+= #inner_tuples 
+= #qual_operator×#inner_tuples
of NestLoopJoin 
•#outer_tuples> 1 の場合 
R⨝S 
Scan R 
r2 
r1 
r3 
r4 
Scan Swith 
r1 
s1 
s2 
s3 
ReScanSwith 
r2 
s1 
s2 
s3 
outer 
inner 
Cost = Cost(outer) + Cost(inner) + 
+ (#outer_tuples-1) ×Cost(ReScaninner) 
IndexScanのReScanではバッファヒット率が高くなる 
→ 通常のIndexScanより低コスト 
Mackertand Lohman関数の応用により見積り 
+= #inner_tuples×#outer_tuples 
+= #qual_operator×#inner_tuples×#outer_tuples
of HashJoin 
2014/12/04 26
of HashJoin 
Buildフェーズ 
•Cost += Cost(inner) 
2014/12/04 27 
+= #qual_op×#inner_tuples 
+= #inner_tuples 
ハッシュ表作成時の 
ハッシュ関数実行コスト
of HashJoin 
2014/12/04 28 
Buildフェーズ 
•Cost += Cost(inner) 
+= #qual_op×#inner_tuples 
+= #inner_tuples
of HashJoin 
2014/12/04 29 
Buildフェーズ 
•Cost += Cost(inner) 
Probeフェーズ 
•Cost += Cost(outer) 
+= #qual_op×#inner_tuples 
+= #inner_tuples 
+= #qual_op×#bucket_size×0.5 
×#outer_tuples 
+= #match_tuples 
ハッシュ表検索時の 
ハッシュ関数+バケツ内検索コスト
of HashJoin 
2014/12/04 30 
record 
record 
record 
record 
record 
record 
record 
record 
record 
record 
バケツ数: 2 
record 
record 
record 
record 
record 
record 
record 
record 
record 
record 
バケツ数: 5 
record 
record 
record 
record 
record 
record 
record 
record 
record 
record 
build 
平均2.5回のタプル比較 
平均1回のタプル比較 
2.00E+06 
2.20E+06 
2.40E+06 
2.60E+06 
2.80E+06 
0 
50000 
100000 
150000 
Cost 
inner表選択数 
Cost Estimation of Hash Join 
・PostgreSQLのバケツサイズ戦略 
→ inner表選択数に応じて2倍ずつ増やす 
・バケットサイズ拡大直後はコストが低下
of HashJoin 
2014/12/04 
•メモリに収まらない場合: Hybrid Hash Join 
•inner 表とouter 表をハッシュ関数でパーティション分 割してディスク書き込み 
•パーティション毎にinner 表のハッシュ表をbuildouter表をprobe 
+=#inner_pages+ #outer_pages 
+=#inner_pages+ #outer_pages
コストベース最適化ここまでのまとめ 
•実行プランのコストモデル設計 
•候補プランの探索 
2014/12/04 32 
⇔ハードウェア特性 
seq_page_cost 
random_page_cost 
cpu_tuple_cost 
cpu_index_tuple_cost 
cpu_operator_cost 
⇔処理方式・データ特性 
•統計情報 
•ページ数、タプル数、選択率、・・・ 
•アクセスパス 
•SeqScan, IndexScan, ... 
•結合方式 
•NestLoopJoin, HashJoin 
•・・・
コストベース最適化ここまでのまとめ 
•実行プランのコストモデル設計 
•候補プランの探索 
2014/12/04 33 
⇔ハードウェア特性 
seq_page_cost 
random_page_cost 
cpu_tuple_cost 
cpu_index_tuple_cost 
cpu_operator_cost 
⇔処理方式・データ特性 
•統計情報 
•ページ数、タプル数、選択率、・・・ 
•アクセスパス 
•SeqScan, IndexScan, ... 
•結合方式 
•NestLoopJoin, HashJoin 
•・・・
候補プランの探索 
⇔リレーション結合順序の決定 
愚直に列挙すると組み合わせ爆発 
•動的計画法(DP)による網羅的探索 
•少数のリレーション結合の王道 
•ヒューリスティクスによる探索 
•多数のリレーションの妥協策 
2014/12/04 34 
A⨝B⨝C 
A 
B 
⨝ 
C 
⨝ 
A 
C 
⨝ 
B 
⨝ 
B 
A 
⨝ 
C 
⨝ 
A 
B 
⨝ 
C 
⨝ 
A 
C 
⨝ 
B 
⨝ 
B 
A 
⨝ 
C 
⨝ 
・・・
動的計画法によるプラン探索 
•「最適な実行プランの一部もまた最適」と仮定 
•部分的な結合ごとに最適プランを探索 
•最適でないプランを破棄→ 探索候補数の削減 
•結合の数を増やしながら最適プランを逐次探索 
•PostgreSQLのオプティマイザ 
2014/12/04 35 
Left-deep join tree 
Right-deep join tree 
Bushy join tree 
⨝ 
⨝ 
⨝ 
⨝ 
⨝ 
⨝ 
⨝ 
⨝ 
⨝
Ex) A ⨝B ⨝C ⨝D
Ex) A ⨝B ⨝C ⨝D
Ex) A ⨝B ⨝C ⨝D
動的計画法によるプラン探索 
• 探索候補数削減のための工夫 
• 結合条件のある結合のみを考慮 
(ex. ・・・FROM A, B WHERE A.id = B.a_id ・・・) 
• ソート順序による制限 
• 結合リレーション数N 
• 探索候補数O(N!) 
• 探索時間が急速に増加 
→ 大きいNにはヒューリスティクス 
2014/12/04 39
ヒューリスティクス 
•「ある程度よいプランを」「ある程度の時間内に」 
•初期の候補プラン群を生成 
•一定のルールに従い候補プラン群から 次の候補プラン群を生成 
•一定時間繰り返して候補プラン群 を良くしてゆく 
•遺伝的アルゴリズム 
•PostgreSQLのGEQO(N ≧12) 
•焼きなまし法 
•PGCon2010 
2014/12/04 40
コストベース最適化まとめ 
•実行プランのコストモデル設計 
•候補プランの探索 
•動的計画法による網羅的探索 
•ヒューリスティクス:遺伝的アルゴリズム、焼きなまし法 
2014/12/04 41 
⇔ハードウェア特性 
seq_page_cost 
random_page_cost 
cpu_tuple_cost 
cpu_index_tuple_cost 
cpu_operator_cost 
⇔処理方式・データ特性 
•統計情報 
•ページ数、タプル数、選択率、・・・ 
•アクセスパス 
•SeqScan, IndexScan, ... 
•結合方式 
•NestLoopJoin, HashJoin 
•・・・
PostgreSQL! 
クエリ最適化の研究 
•System R (1976) 
•動的計画法によるコストベース最適化 
•Challenging な取り組み 
•Multi-query optimization [T.Sellis, 1987] 
•Dynamic mid-query re-optimization [N.Kabraet.al., 1998] 
•Query progress indicator [G.Luoet.al., 2004] 
•Access cost estimation on distributed object storage [B.Araiet.al., 2010] 
•Query optimization for hierarchical partitioning [H.Herodotouet.al., 2011] 
•SDN-powered optimizer on distributed storage [P.Xionget.al., 2014] 
•Cost estimation improvement with proactive subset query execution [A.Duttet.al., 2014] 
•Pilot Run によるUDFコスト推定[K.Karanasoset.al., 2014] 
2014/12/04 42
まとめ 
•リレーショナルモデルとオプティマイザの 切っても切れない関係 
•コストベース最適化 
2014/12/04 43

More Related Content

What's hot

Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
 
XIDを周回させてみよう
XIDを周回させてみようXIDを周回させてみよう
XIDを周回させてみようAkio Ishida
 
押さえておきたい、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
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
NTT DATA OSS Professional Services
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
Yoshiyuki Asaba
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
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
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
NTT DATA OSS Professional Services
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
NTT DATA OSS Professional Services
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
NTT DATA OSS Professional Services
 

What's hot (20)

Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
XIDを周回させてみよう
XIDを周回させてみようXIDを周回させてみよう
XIDを周回させてみよう
 
押さえておきたい、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 発表資料)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...行ロックと「LOG:  process 12345 still waiting for ShareLock on transaction 710 afte...
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
 
perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)perfを使ったPostgreSQLの解析(後編)
perfを使ったPostgreSQLの解析(後編)
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 

Similar to より深く知るオプティマイザとそのチューニング

JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)
Yoshinori Nakanishi
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
 
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdfグラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
ToshihiroIto4
 
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
yamahige
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
Insight Technology, Inc.
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端Takuya Akiba
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
 
A Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.jsA Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.js
博三 太田
 
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
Keisuke Nakata
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
Shiqiao Du
 
A Tour of PostgreSQL
A Tour of PostgreSQLA Tour of PostgreSQL
A Tour of PostgreSQL
EDB
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
Toshi Harada
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3moai kids
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
 
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_distShohei Hido
 

Similar to より深く知るオプティマイザとそのチューニング (20)

JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdfグラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
グラフデータベースにおけるWorst-case optimal joinの最適化_DEIM2024.pdf
 
コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析コンピューターの整列処理におけるデータ操作の時間的共起分析
コンピューターの整列処理におけるデータ操作の時間的共起分析
 
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
[db analytics showcase Sapporo 2017] A15: Pythonでの分散処理再入門 by 株式会社HPCソリューションズ ...
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
A Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.jsA Road map of Data Analysis for Visualization with D3.js
A Road map of Data Analysis for Visualization with D3.js
 
StreamGraph
StreamGraphStreamGraph
StreamGraph
 
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
Hierarchical and Interpretable Skill Acquisition in Multi-task Reinforcement ...
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
A Tour of PostgreSQL
A Tour of PostgreSQLA Tour of PostgreSQL
A Tour of PostgreSQL
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3
 
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタつくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
 

More from Yuto Hayamizu

Beyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeBeyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To Code
Yuto Hayamizu
 
VLDB2015 会議報告
VLDB2015 会議報告VLDB2015 会議報告
VLDB2015 会議報告
Yuto Hayamizu
 
The Art of Performance Evaluation
The Art of Performance EvaluationThe Art of Performance Evaluation
The Art of Performance Evaluation
Yuto Hayamizu
 
性能測定道 実践編
性能測定道 実践編性能測定道 実践編
性能測定道 実践編
Yuto Hayamizu
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編
Yuto Hayamizu
 
Fine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQLFine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQL
Yuto Hayamizu
 
指の話
指の話指の話
指の話
Yuto Hayamizu
 
Emacs Lispのある生活
Emacs Lispのある生活Emacs Lispのある生活
Emacs Lispのある生活
Yuto Hayamizu
 
いいかげんな人のためのTransactional Memory Primer
いいかげんな人のためのTransactional Memory Primerいいかげんな人のためのTransactional Memory Primer
いいかげんな人のためのTransactional Memory PrimerYuto Hayamizu
 
C-x C-f のなかのひと
C-x C-f のなかのひとC-x C-f のなかのひと
C-x C-f のなかのひとYuto Hayamizu
 

More from Yuto Hayamizu (10)

Beyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To CodeBeyond EXPLAIN: Query Optimization From Theory To Code
Beyond EXPLAIN: Query Optimization From Theory To Code
 
VLDB2015 会議報告
VLDB2015 会議報告VLDB2015 会議報告
VLDB2015 会議報告
 
The Art of Performance Evaluation
The Art of Performance EvaluationThe Art of Performance Evaluation
The Art of Performance Evaluation
 
性能測定道 実践編
性能測定道 実践編性能測定道 実践編
性能測定道 実践編
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編
 
Fine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQLFine-grained Measurement of PostgreSQL
Fine-grained Measurement of PostgreSQL
 
指の話
指の話指の話
指の話
 
Emacs Lispのある生活
Emacs Lispのある生活Emacs Lispのある生活
Emacs Lispのある生活
 
いいかげんな人のためのTransactional Memory Primer
いいかげんな人のためのTransactional Memory Primerいいかげんな人のためのTransactional Memory Primer
いいかげんな人のためのTransactional Memory Primer
 
C-x C-f のなかのひと
C-x C-f のなかのひとC-x C-f のなかのひと
C-x C-f のなかのひと
 

より深く知るオプティマイザとそのチューニング