0

LOAD DATA 機能を許可しない共有 Web スペース上の MySQL 5.1 サーバーに、約 1600 万のレコードをアップロードする必要があります。テーブルは Innodb テーブルです。まだキーを割り当てていません。

したがって、Python スクリプトを使用して、CSV ファイル (サイズが 2.5 GB) を個々の INSERT ステートメントを含む SQL ファイルに変換します。SQL ファイルを起動しましたが、プロセスが非常に遅く、毎分 1000 ~ 1500 行が処理されているように感じます。

その間、一括挿入について読みましたが、1 つの挿入ステートメントにいくつのレコードを含めることができるかを示す信頼できる情報源は見つかりませんでした。あなたは知っていますか?

キーを持たず、後で追加することは利点ですか?

すべての挿入に関するトランザクションは、プロセスのスピードアップに役立ちますか? 実際、現時点では、データベースで動作している接続 (私のもの) は 1 つだけです。

4

1 に答える 1

1

insert ... values ...単一のリクエストを実行する構文を使用して複数の行を挿入する場合、クエリのサイズは行数ではなくmax_allowed_pa​​cket値によって制限されます。

キーに関して: データ操作の前にキーを定義することをお勧めします。実際、モデルを構築するときは、キー、リレーション、インデックスなどを考える必要があります。

データを挿入する前にもインデックスを定義することをお勧めします。CREATE INDEX巨大なデータセットでは非常にゆっくりと動作します。しかし、インデックスの作成を延期することは、大きな欠点ではありません。

挿入を高速化するには、自動コミットモードをオンにして、テーブルで同時要求を実行しないようにしてください。

于 2012-09-29T21:43:39.630 に答える