HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

ベンチマーク結果

 このようにしてコンパイルしたMySQLを先の公式版バイナリとまったく同様の設定でセットアップ・起動し、sql-benchを実行した結果が次の表6図2である。alter-tableテストについては公式のインテル コンパイラー版よりもパフォーマンスが低下したものの、insertテストやconnectテストについてはパフォーマンスの向上が見られた。また、wisconsinテストによるSQLコマンドごとのパフォーマンス結果については、全体的にはパフォーマンスの向上が見られたものの、項目によっては公式版のほうがパフォーマンスが良い、という結果になったものもあった。

表6 インテル コンパイラーで自作ビルドしたバイナリと公式版バイナリのベンチマーク結果比較
ベンチマーク項目インテル コンパイラー版公式GCC版
自作版公式版
alter-table29.3秒18.3秒31.7秒
ATIS3.3秒3.7秒3.3秒
big-tables3.3秒3.0秒4.0秒
connect48.3秒50.0秒50.7秒
create252.0秒248.0秒249.0秒
insert618.3秒648.3秒662.7秒
select44.0秒44.7秒59.0秒
wisconsin3.3秒4.0秒3.7秒

表7 SQLコマンドごとのパフォーマンス比較(抜粋)
操作所要時間(秒)
インテル コンパイラー版GCC版
自作版公式版
alter_table_add13.07.313.7
alter_table_drop12.37.713.3
count_distinct_big2.33.73.7
count_on_key9.39.311.3
delete_all_many_keys65.778.077.7
delete_big_many_keys65.778.077.7
insert_key125.7137.3140.3
once_prepared_select11.012.712.7
prepared_select16.716.318.0
select_cache225.726.039.7
select_key26.030.327.0
select_key227.332.728.7
select_key2_return_key26.730.327.3
select_key2_return_prim27.031.728.0
select_key_prefix27.032.328.0
update_of_key28.76.721.0
update_of_primary_key_many_keys42.342.037.0

インテル コンパイラーでコンパイルすることでMySQLの高速化が期待できる

 以上のように、インテル コンパイラーでコンパイルしたMySQLバイナリは、sql-benchにおいてGCCでコンパイルしたものと比べ高いパフォーマンスを発揮していることが分かった。特にinsertやselectといった操作はより高速に実行できる可能性がある。

 ただし、実運用環境においては必ずしも大きな差が出るとは限らない点には気を付けてほしい。たとえば、MySQL向けの簡易ベンチマークとして、mysqlbenchというものがあるが、こちらのベンチマーク結果では、インテル コンパイラー版とGCC版とではほとんどパフォーマンスに差が見られなかった。このmysqlbenchはTPC-Bと呼ばれる、バッチ処理をイメージした単純なトランザクションのパフォーマンスを測定するもので、どちらかというとI/Oパフォーマンスが重視されるベンチマークだからだと思われる。

 この点を考慮しても、インテル コンパイラー版のMySQLバイナリはGCC版バイナリ以上のパフォーマンスが期待できると考えて良いだろう。また、MySQLに限らず、ほかのデータベースシステムでもインテル コンパイラーを利用することで高速化が期待できる。もちろん、世の中のすべてのプログラムがインテル コンパイラーで高速化できるわけではないが、もし高いパフォーマンスが要求されるアプリケーションが必要な場合、一度インテル コンパイラーでのコンパイルを試してみてはいかがだろうか。

 なお、インテル コンパイラーの最新情報や採用事例などはインテルのWebサイトでも公開されている。インテル コンパイラーに興味を持たれた方は、ぜひこちらも参照してほしい。