mysql チュートリアルバッチ SQL 挿入のカラム概要
推奨 (無料): mysql チュートリアル
大量のデータを含む一部のシステムでは、クエリ効率が低いことに加えて、データベースが次のような問題に直面します。データがデータベースに保存されるまでに時間がかかるだけです。特にレポート システムの場合、データのインポートに費やす時間が毎日数時間から 10 時間以上かかる場合があります。したがって、データベース挿入のパフォーマンスを最適化することは理にかなっています。
#1 つの SQL ステートメントで複数のデータが挿入される
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);
#トランザクションでの挿入処理START TRANSACTION;INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);...COMMIT;
データの規則的な挿入
データの規則的な挿入とは、シーケンシャルソートデータベースは挿入時にインデックスデータを維持する必要があるため、不要なレコードがあるとインデックスを維持するコストが増加します。INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('2', 'userid_2', 'content_2',2);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('2', 'userid_2', 'content_2',2);
テスト比較データ、ランダム データとシーケンシャル データのパフォーマンス比較
最初にインデックスを削除し、 insert 完了後のインデックスの再構築
包括的なパフォーマンス テスト
データのマージトランザクション データ量が少ないときはメソッドのパフォーマンスが明らかに向上しますが、データ量が多いときは急激にパフォーマンスが低下します。これは、データ量が innodb_buffer の容量を超えるためです。各位置決めインデックスはより多くのディスクを使用します。読み取りおよび書き込み操作が行われ、パフォーマンスがより速く低下します。#注意事項##SQL ステートメントには長さの制限があるため、マージするときはデータ SQL の長さ制限は、同じ SQL 内で超えてはなりません。この制限は、
max_allowed_packet ですが、8M# に変更できます。 ## テスト中。
トランザクションのサイズを制御する必要があります。大きすぎると実行効率に影響する可能性があります。 MySQL には
innodb_log_buffer_size
以上がMySQLのバッチSQL挿入のパフォーマンス最適化の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。