前回まではSelect系のパフォーマンスを紹介しました。
今回はInsertのパフォーマンスについてふれてみます。
Insert方式は用途に応じて各種選択が可能です。
大量データの一括ロード時は、SQL文のパースが必要ないバルクロードを利用すると効果的です。
アプリケーション仕様上、登録行セットをまとめることが可能であれば、MySQL独自構文であるマルチプルInsert文(1回のInsert文発行で複数行セットをInsertする)を利用すると効果的です。
■処理時間比較
Row長約200bytes、100万件(約200Mbytes)のデータを投入した場合の比較 (単位:秒)
(サーバ環境とMySQLパラメータは前項目と同一。NO RAID、元データは同じローカルDISKよりロード)
| Insert 処理方式 |
1Insertの行セット数 | MySQL 5.0.79 | MySQL 5.1.30 | ||
|---|---|---|---|---|---|
| InnoDB | MyISAM | InnoDB | MyISAM | ||
| バルクロード | 31.99 | 31.24 | 37.79 | 31.51 | |
| マルチプルInsert | 1,000行 | 78.86 | 2,104.75 | 95.39 | 2,048.20 |
| 500行 | 102.88 | 2,560.96 | 132.01 | 2,392.40 | |
| 100行 | 300.38 | 3,554.03 | 370.88 | 3,393.88 | |
| 通常Insert※ | 1行 | 25,459.00 | 27,887.00 | 28,284.00 | 29,797.00 |
※1000件分を計測し×1000で算出
【参考】1,000万件ロード時
| Insert処理方式 | MySQL 5.0.79 / MySQL 5.1.30 | |
|---|---|---|
| InnoDB | MyISAM | |
| バルクロード | 805.78 / 864.08 | 366.28 / 371.06 |
5月 29
This entry was posted You can leave a response, or trackback from your own site.
コメント入力欄