猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

MySQLの連続INSERTを高速にする

投稿日:

もししらなければ確実に、そして恐ろしく効果を発揮できると思います。

INSERTを連続実行する際にボトルネックとなるのはコミットです。
オートコミットをオフにするという手もあるのですが、
INSERTをまとめることで、コミットの回数を減らすだけでも確実に効果があるはずです。

具体的には

insert into TABLE_NAME(col1,col2,col3) vaues ('aaa1','bbb1','ccc1');
insert into TABLE_NAME(col1,col2,col3) vaues ('aaa2','bbb2','ccc2');
insert into TABLE_NAME(col1,col2,col3) vaues ('aaa3','bbb3','ccc3');

とある場合は

insert into TABLE_NAME(col1,col2,col3) vaues ('aaa1','bbb1','ccc1'),('aaa2','bbb2','ccc2'),('aaa3','bbb3','ccc3');

とすればよいのです。

私の場合、4万件が約3分かかっていたのが、
20件毎にまとめるだけで約8秒になりました。
20倍以上の効果がありました!

もちろん環境や設定によりまとめる数は調整が必用と思われます。

INSETが遅すぎてお困りのかた。
是非お試しください!!

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL
-

執筆者:

関連記事

MySQLの実行速度テスト用PHP

1.testデータベースにtest_tableテーブルを作成。 2.1万件のデータを登録します。 3.1000件のフラグを更新 4.更新したデータを検索する時刻を測定して表示 するサンプルです。 &l …

mysql

MySQLにファイルからSQLを読み込む

MySQLにファイルからSQLを読み込む方法は 意外と知られていない方法ですのでメモっておきます。 INDEX1 MySQLにログイン中の場合2 スクリプトから実行する場合3 おまけのコマンドで指定す …

mysql

vmwareをアップデートしたらMySQLが起動しなくなった

[root@centos100 log]# service mysql restart MySQL server PID file could not be found! [失敗] Starting …

MySQLにローカルから接続する

リモートから接続するユーザー リモートから接続するユーザーは以下のような感じで作成できます。 $mysql> grant all privileges on *.* to username@’% …

sqlserver

SQLSERVER インストール後にDataをDドライブ(別ドライブへ)移動する方法

通常OSはCドライブ、データはDドライブなどの別ドライブを使用します。 SQLSERVERではデータの肥大化が起こりうる実データファイル(mdfやldf)をCドライブ以外に変更したい場面は多いはずです …