データベース構造劣化による OLTP性能低下に関する 一考察 東京大学

[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
データベース構造劣化による
OLTP性能低下に関する
一考察
東京大学
星野 喬、合田 和生、喜連川 優
2007年2月28日
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
1
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
概要




背景と目的
MySQLにおけるTPC-Cベンチマーク構造劣化分析
アクセスパタンに適応的な構造劣化抑制戦略の検討
まとめ
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
2
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
背景と目的
 背景
– OLTPは基幹系業務で不可欠な処理方式
– データベースシステムの常時運用ニーズの高まり
– データベース更新データベース構造劣化  アクセス性能低下
 B+Tree構造においては
充填率低下、クラスタ化度低下、木の高さ増大、など
 構造劣化に対する2つの補完的なアプローチ
– (従来): 再編成によって性能を回復させるアプローチ
– (提案): 構造劣化の進行を抑制することで性能低下を遅らせるアプローチ
 目的
– OLTP性能を低下させる構造劣化の分析
– 構造劣化の進行を抑制するデータ更新戦略の検討
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
3
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
TPC-Cベンチマーク
 TPC によるOLTPベンチマークのデファクトスタンダード
 卸売会社におけるオンライントランザクションをシミュレート
–
–
–
–
–
New-order(注文)
Payment(支払)
Delivery(配達)
Order-status(注文確認)
Stock-level(在庫確認)
Entity-Relationshipダイアグラム
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
4
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
TPC-Cトランザクションの表アクセス一覧
Table
Trn
NewOrder
Warehouse
District
Customer
Select
Select
Select
Order
Orderline
Neworder
Insert
Insert
Insert
Update
Select
Select
Item
Stock
Select
Select
Update
Select
Insert
Payment
Update
Update
Update
Select
Orderstatus
Select
Select
Select
Select
Delivery
Select
Delete
Update
Stocklevel
History
Select
Update
Update
Select
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
Select
5
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
使用ソフトウェア設定
実験設定
MySQL ver.
5.0.22-mon
Database Engine
InnoDB
 データベースシステム
Buffer cache size
16MB
OS ver.
Redhat Linux
WS3.0
Kernel ver.
2.4.21-40.EL.smp
Benchmark
TPC-C rev.5.6
– MySQL InnoDB v5.0
– クラスタ表(B+Tree)を用いて表を作成
 TPC-Cデータ
– 4GBの表空間をrawデバイス上に確保
– TPC-Cウェアハウス数16
 初期ロード後使用空間約1.6GB
 OLTP負荷
– アクティブウェアハウス数16
– ウェアハウス辺り5スレッドにて並列実行
3%
3%
4%
Payment
 各スレッドは確率的に
トランザクションを選択
– 10万トランザクション実行
New-Order
45%
45%
Delivery
Order-status
Stock-level
トランザクション実行比率
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
6
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
実験環境
Xeon 3.2GHz x2
2GB Memory
Emulex LP8000
(1GbpsFC) x2
via two PCI-X 133MHz bus
Firmware version: 3.93a0
Driver version: 7.3.6
Fibre
Channel
Switch
(1Gbps)
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
1
3
2
4
Seagate Cheetah
Model: ST318203FC
Spec: 18GB 10000rpm
SoftwareRAID0: 4disks, 64kb chunk
7
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
トランザクション応答時間分析
warehouse,
district
New-order
warehouse,
district
Payment
Order-status
先に実行されるSQL(群)
が棒グラフの下
(Deliveryに関しては
ループ内の結果を合計)
Order表アクセス性能
低下を確認
(Buffer cache 16MB)
Delivery
Stock-level
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
8
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
充填率低下による性能低下
 Order表に対するアクセス
Order表のデータページ
– New-Orderがinsert
 order id順
– Deliveryがselect, update
データ量は同じ、ページ数は倍
 order id順
 new_order表に存在している分だけNew-Orderよりも遅れて実施
 充填率低下によるIO数増加
– 初期ロード時のOrder表の充填率はほぼ1
– New-Orderによるinsertデータは充填率が低下(page splitにより
約1/2)
– 一連のDeliveryはクラスタ鍵順にOrder表にアクセスするため、トラ
ンザクションあたりに読み込まなければならないページ数が増大
 IOPS増大
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
9
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
Order表の充填率
(w_id,d_id)=(1,1) (1,2)
連番アクセスでIO数2倍
…
Order表のクラスタ鍵(w_id, d_id, o_id)
表空間は実験1のloop5直前のもの
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
10
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
使用ソフトウェア設定
実験設定
MySQL ver.
5.0.22-mon
Database Engine
InnoDB
 データ
Buffer cache size
4MB~96MB
OS ver.
Redhat Linux
WS3.0
Kernel ver.
2.4.21-40.EL.smp
Benchmark
TPC-C rev.5.6
– 4GBの表空間をrawデバイス上に確保
– TPC-Cウェアハウス数16
 初期ロード後使用空間約1.6GB
 トランザクション
– アクティブウェアハウス数16
– ウェアハウス辺り5スレッドにて並列実行
 各スレッドは確率的に
トランザクションを選択
– 計10万トランザクション実行
0% 0%
New-Order
6%
Payment
 パラメータ
– データ更新するトランザクションのみ選択
– バッファサイズを変化させてIOPSを測定
表、索引毎にIOPSを取得するように
MySQLを修正
実験ID: RES.clst.wi.W16.B*M.trn6.auto4
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
Delivery
47%
47%
Order-status
Stock-level
トランザクション実行比率
11
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
各表、索引におけるIOPS
Buffer cache 4MB
32MB
8MB
64MB
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
order表の変化が顕著
:充填率低下によるIO増加
16MB
96MB
12
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
考察
 充填率低下によるOrder表アクセスのIOPS増加を確認
– バッファキャッシュが小さいときのみIOPS増加を観測
– バッファキャッシュが十分大きいときは、New-Orderでinsertされたデータが
Deliveryでアクセスされるまでキャッシュから追い出されないため、IOが増え
ないと思われる
– 鍵値に対してシーケンシャルアクセス
 一連のトランザクションがクラスタ鍵順にデータを挿入、参照、更新
 構造劣化によるOLTP性能低下
– 1トランザクションだけ見ていてもアクセスするデータが少ないケースがほとんど
であるため、構造劣化とは関係ないように当初は思われた
 クラスタ化度低下は起きているが、OLTP性能低下への影響は観測されず
– 一連のトランザクションがデータ配置と特定の相関を持つとき、構造劣化に起
因する性能低下がトランザクション処理においても観測される
 特定領域の充填率低下  特定領域にトランザクションが集中
バッファキャッシュが少ない場合、IO増加によりトランザクションあたりのレスポン
スタイム増加
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
13
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
B+TreeのPage split における
充填率調整
従来(InnoDB)の戦略
insert
目標充填率94%
目標充填率50%
–検知: ページ内で最大鍵値レコードが
連続して起きている場合、シーケンシャ
ルインサートだと判断
–戦略: split時にシーケンシャルイン
サートと見なせるときは15/16:1/16
で分割
–データロード時に有効
問題点
–複合鍵のクラスタ表においては、
B+Treeの途中においてもシーケン
シャルインサートが起き得る
–現在のMySQL InnoDBではそれを
検知できずに、通常の1/2:1/2分割を
実行してしまう
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
14
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
B+TreeのPage split における
充填率調整 –cont.
シーケンシャルインサート中のレコードよりも大きい鍵値を持つレコード集合
シーケンシャルインサート中のレコードよりも小さい鍵値を持つレコード集合
対処法
insert
insert
expected next insert
–検知: ページに対して、最後に挿入さ
れた鍵値を保持し、次の挿入がページ
内で連続した鍵値のレコードだったら、
シーケンシャルアクセスであると判断
–戦略: split時にシーケンシャルアクセ
スを検知した場合、挿入行よりも鍵値
が大きいレコードは新ページに分配し、
そのようなレコードがない場合は任意
の充填率で分配
利点
–目標充填率をアクセスパタンによって
変更することで充填率低下を抑制可能
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
15
[20070228-hoshino] DEWS2007 E2-7 データベース構造劣化によるOLTP性能低下に関する一考察
今後の予定
 アクセスパタンと構造変化との定量的な関係を評価
– シーケンシャルアクセス比率と構造変化量の関係
– データ増加量と構造変化量の関係
 アクセスパタンのモデル化と、その観測手法の確立
 充填率調整手法におけるトレードオフの考察、評価
– データ更新(insert, delete, update)時のオーバーヘッド
– 構造劣化の抑制効果
 再編成戦略も含めてどのような戦略が良いかを検討
Kitsuregawa Laboratory Confidential. © 2007 Kitsuregawa Laboratory, IIS, University of Tokyo.
16