|
||||||||||||||
| 前のページ 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万回のトランザクションを実行したことになります。よって、このトランザクション処理のオーバーヘッド分時間を要したものと考えられます。 ![]() 図4:INSERT文試験の結果 |
||||||||||||||
| UPDATE文試験の内容と結果 | ||||||||||||||
|
「TEST00」テーブルに100万件のレコードを格納した状態にて、以下のUPDATE文について試験を実施しました。
UPDATE TEST00 SET ADDR_CITY = 'bbb' WHERE ADDR_ID BETWEEN ? AND ?
TEST00テーブルのADDR_IDカラムはプライマリーキーであり、インデックスをサポートしているストレージエンジンでは、ユニークインデックスが存在しています。インデックスをサポートしていないストレージエンジンでこのUPDATE文の試験を行うと、その処理時間はほとんどが更新対象レコードを探すための時間になってしまいます。そこで、ここではMyISAMとInnoDBエンジンのみの試験を行いました。 試験方法は、性能測定用アプリケーションから上記のUPDATE文を連続して100回発行し、100回分の処理に要した時間を測定しました。 結果は図5の通りです。MyISAMエンジンの結果がInnoDBエンジンの結果を大きく上回りました。 ![]() 図5:UPDATE文の試験の結果 |
||||||||||||||
| まとめ | ||||||||||||||
|
今回実施した性能試験は非常に簡単なものでしたが、各ストレージエンジンの処理性能の特長をあらわていたと思います。 例えば、ArchiveとCSVエンジンは、機能的には極めて便利な部分がありますが、様々な処理を速やかに実行できるものではありません。特に、今回のハードウェア環境では100万件ものレコードを持つテーブルを、ArchiveやCSVエンジンにて扱うには少し荷が重すぎたかも知れません。 また、MyISAMエンジンはMySQLのデフォルトエンジンであるように、様々な処理に関して非常によい処理性能を持っていると言えます。ただし、トランザクションをサポートしていない点は注意しておく必要があります。 |
||||||||||||||
| 最後に | ||||||||||||||
|
計6回に渡って、MySQLのストレージエンジンについて解説しました。いかがだったでしょうか。MySQLの最大の特長はストレージエンジンを複数持ち、用途に応じて使い分けられる点です。読者の皆様がMySQLを使用する際、今回の連載がストレージエンジン選択の参考になれば幸いです。 |
||||||||||||||
|
前のページ 1 2 3 |
||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
|
|
||||||||||||||
|
||||||||||||||



