[[PageNavi(NavigationList)]]
==== ベンチマーク結果 ====
このようにしてコンパイルしたMySQLを先の公式版バイナリとまったく同様の設定でセットアップ・起動し、sql-benchを実行した結果が次の'''表6'''、'''図2'''である。alter-tableテストについては公式のインテル コンパイラー版よりもパフォーマンスが低下したものの、insertテストやconnectテストについてはパフォーマンスの向上が見られた。また、wisconsinテストによるSQLコマンドごとのパフォーマンス結果については、全体的にはパフォーマンスの向上が見られたものの、項目によっては公式版のほうがパフォーマンスが良い、という結果になったものもあった。
{{{ html
<h6>表6 インテル コンパイラーで自作ビルドしたバイナリと公式版バイナリのベンチマーク結果比較</h6>
<table class="wikitable" border="1">
<tr><th rowspan="2">ベンチマーク項目</th><th colspan="2">インテル コンパイラー版</th><th rowspan="2">公式GCC版</th></tr>
<tr><th>自作版</th><th>公式版</th></tr>
<tr><td>alter-table</td><td>29.3秒</td><td>18.3秒</td><td>31.7秒</td></tr>
<tr><td>ATIS</td><td>3.3秒</td><td>3.7秒</td><td>3.3秒</td></tr>
<tr><td>big-tables</td><td>3.3秒</td><td>3.0秒</td><td>4.0秒</td></tr>
<tr><td>connect</td><td>48.3秒</td><td>50.0秒</td><td>50.7秒</td></tr>
<tr><td>create</td><td>252.0秒</td><td>248.0秒</td><td>249.0秒</td></tr>
<tr><td>insert</td><td>618.3秒</td><td>648.3秒</td><td>662.7秒</td></tr>
<tr><td>select</td><td>44.0秒</td><td>44.7秒</td><td>59.0秒</td></tr>
<tr><td>wisconsin</td><td>3.3秒</td><td>4.0秒</td><td>3.7秒</td></tr>
</table>
}}}
[[Thumb(385e24af977ac6bd13fffb76fb437677.png, caption=図2 ベンチマークの実行結果(公式のGCC版を1とした相対時間比較))]]
{{{ html
<h6>表7 SQLコマンドごとのパフォーマンス比較(抜粋)</h6>
<table class="wikitable" border="1">
<tr><th rowspan="3">操作</th><th colspan="3">所要時間(秒)</th></tr>
<tr><th colspan="2">インテル コンパイラー版</th><th rowspan="2">GCC版</th></tr>
<tr><th>自作版</th><th>公式版</th></tr>
<tr><td>alter_table_add</td><td>13.0</td><td>7.3</td><td>13.7</td></tr>
<tr><td>alter_table_drop</td><td>12.3</td><td>7.7</td><td>13.3</td></tr>
<tr><td>count_distinct_big</td><td>2.3</td><td>3.7</td><td>3.7</td></tr>
<tr><td>count_on_key</td><td>9.3</td><td>9.3</td><td>11.3</td></tr>
<tr><td>delete_all_many_keys</td><td>65.7</td><td>78.0</td><td>77.7</td></tr>
<tr><td>delete_big_many_keys</td><td>65.7</td><td>78.0</td><td>77.7</td></tr>
<tr><td>insert_key</td><td>125.7</td><td>137.3</td><td>140.3</td></tr>
<tr><td>once_prepared_select</td><td>11.0</td><td>12.7</td><td>12.7</td></tr>
<tr><td>prepared_select</td><td>16.7</td><td>16.3</td><td>18.0</td></tr>
<tr><td>select_cache2</td><td>25.7</td><td>26.0</td><td>39.7</td></tr>
<tr><td>select_key</td><td>26.0</td><td>30.3</td><td>27.0</td></tr>
<tr><td>select_key2</td><td>27.3</td><td>32.7</td><td>28.7</td></tr>
<tr><td>select_key2_return_key</td><td>26.7</td><td>30.3</td><td>27.3</td></tr>
<tr><td>select_key2_return_prim</td><td>27.0</td><td>31.7</td><td>28.0</td></tr>
<tr><td>select_key_prefix</td><td>27.0</td><td>32.3</td><td>28.0</td></tr>
<tr><td>update_of_key</td><td>28.7</td><td>6.7</td><td>21.0</td></tr>
<tr><td>update_of_primary_key_many_keys</td><td>42.3</td><td>42.0</td><td>37.0</td></tr>
</table>
}}}
==== インテル コンパイラーでコンパイルすることでMySQLの高速化が期待できる ====
以上のように、インテル コンパイラーでコンパイルしたMySQLバイナリは、sql-benchにおいてGCCでコンパイルしたものと比べ高いパフォーマンスを発揮していることが分かった。特にinsertやselectといった操作はより高速に実行できる可能性がある。
ただし、実運用環境においては必ずしも大きな差が出るとは限らない点には気を付けてほしい。たとえば、MySQL向けの簡易ベンチマークとして、[http://www.mysql.gr.jp/frame/modules/bwiki/?Contrib mysqlbench]というものがあるが、こちらのベンチマーク結果では、インテル コンパイラー版とGCC版とではほとんどパフォーマンスに差が見られなかった。このmysqlbenchはTPC-Bと呼ばれる、バッチ処理をイメージした単純なトランザクションのパフォーマンスを測定するもので、どちらかというとI/Oパフォーマンスが重視されるベンチマークだからだと思われる。
この点を考慮しても、インテル コンパイラー版のMySQLバイナリはGCC版バイナリ以上のパフォーマンスが期待できると考えて良いだろう。また、MySQLに限らず、ほかのデータベースシステムでもインテル コンパイラーを利用することで高速化が期待できる。もちろん、世の中のすべてのプログラムがインテル コンパイラーで高速化できるわけではないが、もし高いパフォーマンスが要求されるアプリケーションが必要な場合、一度インテル コンパイラーでのコンパイルを試してみてはいかがだろうか。
なお、インテル コンパイラーの最新情報や採用事例などは[http://www.intel.co.jp/jp/software/products/index.htm インテルのWebサイト]でも公開されている。インテル コンパイラーに興味を持たれた方は、ぜひこちらも参照してほしい。
[[PageNavi(NavigationList)]]