性能検証!インメモリDB
TimesTenは本当に速いのか
性能検証のツールとしては、TimesTenに付属しているTPTBM(Transaction Processing Throughput Benchmark)を使用します。結果がわかりやすいように今回はTimesTenとOracle DatabaseのスループットとCPU使用率を比較し、検証しました。
ハードウエアは、どちらもIA系サーバー(CPU:Dual-Coreを2基搭載)利用しました。
ソフトウエアは、「TimesTen 7.0.5」「Oracle Database 11.1.0.6」をそれぞれ利用しました。
TPTBM設定として、アプリケーション言語はCを選択、セッション数は1、2、4、8、16、32とし、データ件数は100万件(約150MB)を用意しました。なお、Oracle Databaseは全データがバッファキャッシュされるように設定しました。
実行SQLは、「R100」としてSelectを100%実行、「R70」としてSelect 70%、Insert 10%、Upate 10%、Delete 10%を実行しました。
検証結果考察
まずはスループットの結果から見てみましょう。まずセッション数24の時のスループットで比較すると、TimesTenは約46万TPS、Oracle Databaseは約4万TPSとなり、TimesTenの方が10倍以上速いことがわかります。試験で流れているSQLが非常に軽いとはいえ、インメモリDBでなければなかなかここまでの数値にはお目にかかれません。
次にピークの確認ですが、TimesTenはセッション数が4でピークを迎えます。この4という数値はH/WのCPUコア総数である4と一致しています。その理由は前ページで説明した通り、TimesTenは非常にCPU使用効率が高いためで、1つのコアが1つのセッションを無駄なく処理できていることのあらわれでもあります。
逆にOracle DatabaseはネットワークやそのほかのボトルネックにCPUリソースをとられてしまうため、総コア数がピークにはなりません。
次にCPU使用率の結果を見てみましょう。R100の試験で3万TPSを出すために必要なCPUを比較すると、Oracle Databaseが70%近く必要としているのに対して、TimesTenはわずか6%程度で処理できています。
R70の試験で比較した場合、ディスクI/Oが発生する分さらに差は開いています。この結果からもTimesTenが非常に少ないリソースで高パフォーマンスを実現できていることがわかります。
また、前ページでTimesTenはアプリケーション層に配置すると説明しました。これはアプリケーションと同居してリソースを共有することを意味します。TimesTenを必要とするシステムのアプリケーションは重い処理であることが多く、既にCPUリソースの大半を使用しているケースがよくあります。もしTimesTenがCPUリソースを多く必要とする製品であれば、アプリケーション層のマシンのスケールアップを検討しなければなりません。しかしCPU使用効率が高いため、ハードウエアのスペックを抑えられるというメリットもあります。
では最後にTimesTenの適用事例を紹介しましょう。