
タイトルの件について、分かる方おりましたらどなたかご教授ください。
[DBサーバ]
Linux CentOS 6.4
CPU Xeon core4
SSD 250GB
RAM 32GB
バージョン情報
MySQL 5.5
tomcat 6
JDK 6
会員データをCSVから大量にUSERテーブルへINSERTする処理を行っています。
また、それに関連するデータも同時にINSERTをします。 (USER_ID を持っている SERVICE_POINTテーブルやADDRESSテーブル)
処理の流れとしては以下となります。
(1) 会員情報の入ったCSVファイルをサーバへアップロード
(2) 1でアップロードしたCSVファイルを○○○○件毎に一時ファイルに切り分ける
~~ ここからバックグラウンドで実行 ~~
(3) 2で切り分けたファイルをループで回しながら、メアドの重複やフォーマットエラーなどを判定する
(4) 3でエラーがあれば即座にERRORSテーブルにエラー詳細をINSERTし、コミット&continue;
(5) 3でエラーがなければUSERテーブル・SERVICE_POINTテーブル・ADDRESSテーブルへINSERT処理
(6) その他関連するテーブルへUPDATE処理
(7) 3に戻る
ストレージエンジンは全てInnoDBです。
my.cnfのInnoDBの設定は以下の通りです。
innodb-buffer-pool-size = 24G
innodb-log-buffer-size = 8M
innodb-log-file-size = 1024M
innodb_log_files_in_group = 3
innodb_fast_shutdown = 0
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 4
innodb_change_buffering = all
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 90
innodb_flush_method = O_DIRECT
innodb_lock_wait_timeout = 120
innodb_additional_mem_pool_size = 128M
innodb_file_format = Barracuda
innodb_file_per_table = 1
なお、ERRORSテーブルのINSERTは非常に速いです。
会員数が全くない状態だとスムーズに登録されていくのですが (1秒に15件程度)
テーブルが肥大化して20万件を超えると1秒に1件ほどしかINSERTされません。
この速度を少しでも速くしたいなと思っています。
1件ずつコミットしているのには理由があります。
ただ、1000件ずつコミットしても速度はほぼ変わりませんでした。
こういう場合、やはりパーティショニングを検討しなければならないでしょうか。
よろしければどなたかご教授ください。
以上、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAMPで80ポートが使用されている...
-
mysqlがインストールされている...
-
SQLです教えてくださいお願いし...
-
下記の問合せを行うクエリを、P...
-
下の画像はSQLの4大命令の性質...
-
#1062 - '0' は索引 'PRIMARY' ...
-
「重複を間引いた数」をcountし...
-
SQLiteについて
-
SQLで抽出してCSVで書き出した...
-
同一日に複数レコードがある場...
-
MAMP 99ドル約1.6万円 高い...
-
あってますか?SQL
-
WHERE `年月日` = '晴' OR `年...
-
SQLです教えてくださいお願いし...
-
SQLを作ったのですがうまくいき...
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ロックテーブルサイズ超えのエ...
-
SELECT実行中にINSERTしたい
-
mysqlでCSVインポートでトラン...
-
MySQL8にバージョンアップした...
-
「テーブルに座って……」という...
-
AccessのSQL 部分一致したデー...
-
降順で並び替えて昇順で受け取...
-
外部キーだけのテーブル(主キ...
-
Accessでデータシートに同じデ...
-
sqlplusで表示が変なので、出力...
-
一つ前に戻るには…
-
SQL*LoaderでCSVから指定した列...
-
テーブルリンク リンク元を知...
-
SQL、2つのテーブルで条件一致...
-
update文で改行を入れる
-
会社の飲み会の幹事になり、座...
-
SELECT 文の NULL列は?
-
SQLにて指定日付より前、かつ最...
-
他のデータベースとのテーブル結合
-
mysqlのupdate構文についての質...
おすすめ情報