パフォチュー日記&QA5
第5回 ディスク装置の認識
OLTP環境とディスク・ストライピングについてのポイントは「同時トランザク
ション性能」でした。今回は単発の大量処理、いわゆるバッチ処理とディスク・
ストライピングについて説明しましょう!
書き込み処理をパラレルに実行するASYNC I/O ASYNCは通常[エイシンク]と発音
します。エイとはアルファベットの”A”ではなく発音記号の[ei]の方で[アシ
ンク]とは呼びません。
ASYNC I/Oはオペレーティング・システムの機能として提供されています。Oracle
にはこのASYNC I/Oを使用可能にするための初期設定パラメータが用意されてい
ます。
複数のディスクドライブが用意されていなければASYNC I/Oは意味がありません!
1個のディスクドライブにパラレルで書き込みを行っても結果としてI/O待ちに
なってしまうからです。また、処理の多重度を上げた大量処理でなければASYNC I/O
はスピードアップの効果を示してくれません。
それでは、大量データ(50万件のインポート)を使って検証してみましょう。
(1) RAID1+0をディスク12本でミラーリングして6本分のI/O分散をストライピン
グ・サイズ32Kで行いました。
(2) (1)のディスク上に全てのテーブルスペースとREDOログ・ファイルを作成し
ました。
(3) impを行い時間を測定しました。
(4) 次にストライピングしていない内蔵ディスク1本にインポートされるテーブ
ルスペースを作成しました。
(5) (4)で作成したテーブルスペースで(3)と同様の事を行いました。
上記(3)の結果 6分50秒
上記(5)の結果 18分55秒
以下はiostatの結果です:
(3)の場合
$ iostat -n 5 500 c0t6d0 c2t0d0 c1t0d0 c1t1d0 cpu kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id 0 0 0 9368 1171 1 0 0 0 11 1 12 27 11 38 24 0 0 0 9355 1169 1 2 0 5 3 0 11 26 11 38 25 <略> 0 0 0 4966 615 1 0 0 0 6 1 13 17 14 25 44 0 0 0 5147 638 1 0 0 0 6 1 12 18 9 28 45 0 0 0 7744 968 1 0 0 0 3 0 11 10 9 38 43 0 0 0 8327 1042 1 0 0 0 6 1 14 8 9 39 43
c2t0d0がRAID1+0のストライピング・ディスクです。ここではSun社のA1000を使
用しています。
(5)の場合
$ iostat -n 5 500 c0t6d0 c2t0d0 c1t0d0 c1t1d0 cpu kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id 0 0 0 257 32 1 0 0 0 1367 170 6 1 3 49 47 0 0 0 869 109 1 0 0 0 1390 167 7 6 3 49 42 0 0 0 960 120 1 0 0 0 1410 167 7 8 3 48 41 0 0 0 594 74 1 0 0 0 1402 170 6 4 2 49 44 0 0 0 368 46 1 4 1 10 1389 171 7 3 2 49 46 <略> 0 0 0 171 21 1 0 0 0 1306 163 6 1 1 48 49 0 0 0 43 5 1 4 1 9 1384 173 6 1 2 49 49 0 0 0 134 17 1 0 0 0 1296 162 6 1 2 48 49
c1t1d0がテーブルスペースを作成した内蔵の独立ディスクです。
c2t0d0で表示されているRAID1+0のディスクのBPS(Solaris8ではkpsと表記され
ます)が最大で9368、すなわち約9MB以上1秒間で転送したのに対し、c1t1d0で
表示されている独立ディスクの最大BPSは約1.4MBでした。
今回の結論は、
複数ディスクでストライピング度を上げれば大量処理の効率が上がる!という
事です。今回はインポート処理でしたのでREDOログファイルを更に別のアイド
ル・ディスクに動かしたり、ストライピング度を上げていけばもう少し結果は
良くなるはずです。また、ディスク・キャッシュが実装されているようなRAID
装置であれば更なるスピードアップが予想されます。
次号に続く、
茅ケ崎 フィッシャーマン