[DBチューニングコンテスト とんがりナレッジ] SSD命!! でも勝負はそこではなかった…

祝!2位タイ!!

というわけで、チューニングコンテスト2回目にして待望の入賞を果たすことができました。平間です。

「若手エンジニアが挑戦!」なんて煽り文句が社内外で出ていた中、アラフォーの自分が出てもいいのか?いや、出るんだ!だって賞品欲しいし(入賞者には賞品があるのです)、という心の中の葛藤も乗り越えてつかんだ栄冠です。しかし今回は第2回、実は第1回は入賞はおろか予選落ちしてしまっていたのです…。

というわけで、今回のブログは第1回に敗れた反省からのスタートです。

最強のSSDを作る!

コンテスト出場にあたって組み立てるPCの予算は10万。これを超える分は自腹となるため、何とかこの範囲内で収まる高速なマシンを作る必要があります。また、私が所属しているビッグデータ・ソリューション事業部は高速データベースマシンのInsight Qubeを企画・販売している部署です。そのプライドにかけても、高速なストレージを持つマシンを作る必要があります。

そうして構成したPCのパーツが以下の通り。

分類 名称 スペック等
CPU Intel Core i5 4690k 4core 4thread 3.5GHz/3.9GHz
M/B ASRock Z87M Pro4 PCIe 3.0 x16 1本、PCIe 2.0 x16 1本、SATA3 6ポート
メモリ DDR3-1600 8GB 2枚 合計16GB
HDD 東芝 DT01ACA100 3.5インチ 7200rpm 1TB
SSD CFD CSSD-S6T128NHG6Q 4枚 東芝製 128GB Read 530MB/s Write 490MB/s
HBA アユート PM-MSATA22GT-R PCIe 2.0 x2 Marvell 88SE9230採用

SSDが4枚!これらをRAID0で構成してあげれば、SATA3でも最近のNVMe SSD並みの2GB/s越えのスループットが出るんじゃないの?なんて思ったわけです。

さて、ここに1枚のブロック図があります。今回使用したマザーボードが搭載しているZ87チップセットのブロック図です(コスト削減のために型落ち品を選んだため、新品なのですが旧世代のチップセットでした)。

z87-chipset-diagram-3x2この図を見ると、6ポートあるSATAはZ87チップセットにつながっています。データをCPUまで送るにはZ87とCPUとの間をつなぐDMI2.0というバスを通過する必要があるのですが、実はこのバスの帯域は20Gbpsしかありません。SATA3は6Gbpsなので、6×6=36Gbps。全然足りませんね。今回搭載したSSDは4枚ですが、これでも24Gbps。実際はシリアル伝送するためのエンコード処理なども入って実効速度はさらに低下します。実測するとSSD3枚分、1.5GB/s程度の速度しか出ませんでした。

ssdold

 

残り1枚分はどうするんだ、ということで登場したのが先ほどの表にさりげなく入っていたHBA、追加のSATAアダプタカードです。このカードも選択には注意が必要です。よく格安で売っているカードはPCI-Express 2.0を1レーンしか使用していません。これは500MB/sの帯域しかなく、実行速度はそれ以下となってしまいます。よって最低でも2レーン使用しているものを選ぶ必要があるのです。

そこを注意深く選択し、きちんとCPUに直結されているPCI Expressのスロットに装着すると(チップセット側のスロットに装着してはいけませんよ。DMI2.0で詰まってしまいますから)、以下の結果が待っているわけです。じゃーん。

ssdnew

 

頑張るのはそこではなかった…

ここまでで勝った気になっていたのです。第1回では…。

CPUは何とかなると思っていました。Core i5 4690kで、Hyper-Threadingこそ使えませんがオーバークロックは可能です。1万円高いi7を使わなくても、オーバークロックしてやれば大丈夫、マルチスレッドなんて…。

ところがどっこい、チューニングコンテストはTPC-Cはもちろん、TPC-Hも複数セッションを同時に実行する必要があります。スレッド数が多い方が当然有利です。しかもデータ量はたいしたことなく、自慢の2GB/sパワーを発揮する機会もほとんどなく…。

敗れたり!

というわけで、第2回は自腹でCPUを買い替え(これには妻の応援と家計からの拠出という涙の物語があるのですが、それはさておき)、Core i7 4790Kという他の挑戦者と同じ土俵にやっと乗ったわけです。4790kは優秀ですね。マザーボードにプリセットされたお手軽オーバークロック設定をちょっとセットしただけで、あっさりと4.7GHz動作ですよ。以前のCore i5 4690kではどうしても4.6GHz止まりだったので、スレッド数だけではなくクロックを見ても買い替えた甲斐がありました。

すごいぜCore i7 4790K!

corei7

 

今回はDB (SQL Server)のことをほぼ何も書かずに終わりますが、チューニングコンテストで猛威を振るったカラムストアインデックスも(当然私も使いました)、その発想は「いかに無駄にディスクを読まずにI/O待ちを減らすか」ですので、処理がI/OからCPUに寄ったあとは、CPU処理能力の勝負となるわけですね。つまり、ディスク周りへのこだわりはほどほどにしてCPUを強化するという戦略が、この第2回でも正解だったというわけです。

というわけで、最後にとても当たり前のことを偉そうに一言。

DBサーバーだってCPUが命!

おあとがよろしいようで。