中堅システムエンジニアの備忘ログ

20代後半SEによる、備忘を兼ねた技術的な記事メインのブログです。

MySQLにおけるBulkInsert(MultipleInsert)を用いた性能改善

こんばんは。ねるおです。

 

DBに詳しい方なら耳たこのネタですが、バルクインサートについて書きたいと思います。

「バルクインサート?なにそれ美味しいの?😘」って方向けの記事になります。

 

バルクインサート(マルチプルインサート)とは?

端的に言うと「複数行を一度に追加するインサート文」です。

SQL文投げると、DBに通信したり、SQLをパースしたり色々してるわけです。

なので、一行ずつちまちまインサートしてないで、一気にやっちおうぜ!ということです。

 

先輩に質問するときは小出しにせずに、まとめて来い!と言われるのに似てます。

 

↓ちなみにこんなのです。↓
INSERT INTO

 table_name (col_1, col_2, col_3)

VALUES

 (1, 2, 3),

 (4, 5, 6),

 (7, 8, 9);

 

メリットとデメリット

メリット

 ・通常のインサートに比べてめっちゃ速い。めっちゃ。

デメリット

 ・途中のインサートでコケると全部コケる。

 ・SQLの長さの制限に引っかかる可能性がある。

 

 速度比較してみました

条件は以下です。

 ・DBはMySQL

 ・ローカルのphpMyAdminからインサート

 ・三個カラムがあるテーブルに一万行インサート

 

結果、

 ・通常インサート:393秒

 ・バルクインサート:18秒

 

バルクインサート、知らなかったじゃ済まないですね。

 

 

ねるお