TOPサーバ構築・運用> INSERT文試験の内容と結果
徹底比較!! MySQLエンジン
徹底比較!! MySQLエンジン

第6回:ストレージエンジンの処理性能比較
著者:NTTデータ  藤塚 勤也   2006/10/10
前のページ  1  2  3
INSERT文試験の内容と結果

   使用したINSERT文は次の通りです。
試験用INSERT文
INSERT INTO TEST00 VALUES (?,'aaa','aaa','aaa','aaa','aaa',100)

   ストレージエンジン別の「TEST00」テーブルに、1万件のレコードをINSERTするのに要した処理時間を測定しました。試験開始前の「TEST00」テーブルには1件もレコードが格納されていない状態です。

   試験方法は性能測定用アプリケーションから1万回連続してINSERT文を発行しました。INSERT文中の「?」部分は、プライマリーキーに相当するカラム値で、INSERT文の発行ごとに異なった値を設定しました。

   結果は、図4の通りです。InnoDBエンジンの結果が他のエンジンの結果に比べて悪かったことがわかります。今回使用した5つのストレージエンジンの内、トランザクションをサポートしているのはInnoDBエンジンのみです。このINSERT文の試験では、INSERT文を1回の発行あたりに1回のトランザクションにて実施しましたので、1万回のトランザクションを実行したことになります。よって、このトランザクション処理のオーバーヘッド分時間を要したものと考えられます。

INSERT文試験の結果
図4:INSERT文試験の結果


UPDATE文試験の内容と結果

   「TEST00」テーブルに100万件のレコードを格納した状態にて、以下のUPDATE文について試験を実施しました。

UPDATE TEST00 SET ADDR_CITY = 'bbb' WHERE ADDR_ID BETWEEN ? AND ?
   このUPDATE文は、指定したADDR_IDカラムの値の範囲のレコードを抽出し、ADDR_CITYカラムの値を固定値'bbb'に変更するものです。指定するADDR_IDカラムの値の範囲(BETWEEN句中の「?」部分)は、必ず10件になるように発行するごとに異なった値を設定します。

   TEST00テーブルのADDR_IDカラムはプライマリーキーであり、インデックスをサポートしているストレージエンジンでは、ユニークインデックスが存在しています。インデックスをサポートしていないストレージエンジンでこのUPDATE文の試験を行うと、その処理時間はほとんどが更新対象レコードを探すための時間になってしまいます。そこで、ここではMyISAMとInnoDBエンジンのみの試験を行いました。

   試験方法は、性能測定用アプリケーションから上記のUPDATE文を連続して100回発行し、100回分の処理に要した時間を測定しました。

   結果は図5の通りです。MyISAMエンジンの結果がInnoDBエンジンの結果を大きく上回りました。

UPDATE文の試験の結果
図5:UPDATE文の試験の結果


まとめ

   今回実施した性能試験は非常に簡単なものでしたが、各ストレージエンジンの処理性能の特長をあらわていたと思います。

   例えば、ArchiveとCSVエンジンは、機能的には極めて便利な部分がありますが、様々な処理を速やかに実行できるものではありません。特に、今回のハードウェア環境では100万件ものレコードを持つテーブルを、ArchiveやCSVエンジンにて扱うには少し荷が重すぎたかも知れません。

   また、MyISAMエンジンはMySQLのデフォルトエンジンであるように、様々な処理に関して非常によい処理性能を持っていると言えます。ただし、トランザクションをサポートしていない点は注意しておく必要があります。


最後に

   計6回に渡って、MySQLのストレージエンジンについて解説しました。いかがだったでしょうか。MySQLの最大の特長はストレージエンジンを複数持ち、用途に応じて使い分けられる点です。読者の皆様がMySQLを使用する際、今回の連載がストレージエンジン選択の参考になれば幸いです。

前のページ  1  2  3


株式会社NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第6回:ストレージエンジンの処理性能比較
  はじめに
  LOAD文試験の内容と結果
INSERT文試験の内容と結果