2010/08/31

まず初めに

先日の初投稿で、Disk周りの情報が分かりづらいとご指摘を受けたので、ちょっとチャートにしてみました。



どうでしょうか? ちょっとは見やすくなっているでしょうか?

ということで、これから、データベースの検証ネタを書いていこうと思いますが、まずはOracleを中心に書いていこうと思います。

いろいろベンチマークをとって、H/WとS/Wの特性やチューニングポイントなどが明確になれば良いと思っています。

しかし、思い返せば、ここ数年、さんざんOracleのチューニングを考え、Oracleの内部動作を解き明かすことを仕事にしてきたのですが、きちんとドキュメント化していないことに気づきました。一部社外でデータベースチューニングのセミナーや雑誌に記事を提供してきたものもあるので、この際、まとめなおしてこの場で共有できたらいいなと思っています。

では、検証に使う部品を確認してみましょう。

今回は、(基本的には)フリーで使用できるもので検証していきます。日頃からよく使っているツールも含めてちょっと紹介します。

Oracleのベンチマークに使えるものとして有名なのは、以下の2つです。

1. Swingbench
    javaで書かれたGUIに優れたベンチマークソフトです。TPC-CとTPC-Hをベースにしたベンチマークが可能です。
    また、RACなどクラスタ環境でのベンチマークも簡単に実行できてかなり便利です。
    ただ、処理自体がかなりチューニングされていることもあり、バッドパターンの検証などには不向きです。
    (あまり、そんな検証しないですかね。。。)
    ライセンスの明記はないですが、フリー(non サポート)であることが明記されています。

2. Hammerora
    Tcl/Tkで書かれているベンチマークソフトです。これもGUIはちゃんとしています。ただ、ベンチマークスコアが
    Swingbenchと比較すると桁違いに大きくでます。これは、内部的にTPM(or TPS)の算出をどのように
    実装しているかが両者で異なるからですが、2つのベンチマークソフトを使う場合は結構困ります。

    また、Hammeroraでは、ベンチマークの最大の敵?とも言えるロックのコンテンション(TX enqueue)が
    多発します。なのでチューニングしがいのあるベンチマークソフトと言えるかも知れません。

    こちらのライセンスはGPLです。

ちょっと今日は時間がないので、これまで。次はチューニングやボトルネックを可視化できるフリーなツールを紹介したいと思います。

2010/08/30

インスパイア

小幡さんのブログにインスパイアされて自分もブログを書くことにしました。当然、検証に使うマシンも小幡さんと同スペックとなります。基本的なスペックを以下に示しておきます。

  • CPUはIntel Corei7-860 (4Core 8M Cache 2.80 GHz)
 
  • MemoryはDDR3を4GB*2枚で8GBとしました

  • 肝心なディスクはOSやその他バイナリ格納領域はソコソコで、データファイル格納領域は、WD3000HLFSとしています


  • また、今後の検証で使うSSDはRealSSDをとりあえず1つ用意しました




ということで完成したマシンは、以下(下の方にちょっと見えているのがSSDです)


まずは、ハードウェアの基本性能を確認しておく意味で、vdbenchを使ってハードディスクのベンチマークを取得しておきます。

OS用Disk
  • sequential read/write(1MB)
          111.50 (MB/sec) / 90.20 (MB/sec)
  • random read/write(4KB)
          1.34 (MB/sec) / 1.30 (MB/sec)
  • random read/write(512KB)
          62.25 (MB/sec) / 56.65 (MB/sec)

データファイル用Disk
  • sequential read/write(1MB)
          116.60 (MB/sec) / 95.80 (MB/sec)
  • random read/write(4KB)
          1.73 (MB/sec) /  1.72 (MB/sec)
  • random read/write(512KB)
          74.80 (MB/sec) / 70.64 (MB/sec)

SSD
  • sequential read/write(1MB)
          356.30 (MB/sec) / 132.20 (MB/sec)
  • random read/write(4KB)
          115.40 (MB/sec) / 4.65 (MB/sec)
  • random read/write(512KB)
          351.80 (MB/sec) / 82.05 (MB/sec)

(注釈)


  • MB/sec = 1,048,576 byte/sec
  • CrystalDiskMarkと合わすように、6回計測し、最初の1回分を捨てて、残り5回の内最大値を使用しています
  • ファイルキャッシュの有無で多く変動するので、o_directオプション付きで実行しています




さぁー、それでは、これからガッツリ検証していきますよー。