mysql insert文構文
insert into `table`(`field1`,`field2`) values('value1','value2');
挿入パフォーマンスを向上させる方法
1. 複数のデータを挿入する1つのSQL文
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1);
は
INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0), ('userid_1', 'content_1', 1);として記述できます。
2 . トランザクションを使用します
START TRANSACTION; INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_0', 'content_0', 0); INSERT INTO `insert_table` (`uid`, `content`, `type`) VALUES ('userid_1', 'content_1', 1); ... COMMIT;
注
1 SQL ステートメントの長さに制限があるため、SQL ステートメントをマージする場合は注意してください。長さ制限は max_allowed_packet 設定項目を通じて変更でき、デフォルトは 1M です。
2. トランザクションが大きすぎると実行効率に影響します。Mysql には innodb_log_buffer_size 設定項目があり、この値を超えるとディスク データが使用され、実行効率に影響します。
トランザクションに関する設定項目の説明:
innodb_buffer_pool_size
Innodb を使用する場合、これは重要な変数です。 MyISAM と比較して、Innodb はバッファ サイズの影響を受けやすくなります。 MySIAM は大量のデータに対してデフォルトの key_buffer_size を使用しても問題ありませんが、大量のデータに対してデフォルト値を使用すると Innodb が遅く感じます。 Innodb のバッファ プールはデータとインデックスをキャッシュするため、Innodb のみを使用する場合は、この値をメモリの 70% ~ 80% に設定できます。 key_buffer と同様に、データ量が比較的少なく、あまり増加しない場合は、この値を高く設定しすぎてメモリ使用量が増加しないようにしてください。
innodb_Additional_pool_size
この影響は、少なくともオペレーティング システムが適切にメモリを割り当てることができる場合には、あまり明らかではありません。ただし、Innodb が他の用途にどれだけのメモリを割り当てるかを確認するには、20M 以上に設定する必要がある場合があります。
innodb_log_file_size
は、大量のデータ、特に大量のデータを書き込む場合に非常に重要です。ファイルが大きいほどパフォーマンスは向上しますが、データベースの回復には時間がかかることに注意してください。サーバーのスペースに応じて、私は通常 64M ~ 512M を使用します。 innodb_log_buffer_size
中程度の書き込み操作と短いトランザクションを行うほとんどのアプリケーションでは、デフォルト値で問題ありません。頻繁に更新する場合、または大量の BLOB データを使用する場合は、この値を増やす必要があります。ただし、大きすぎるとメモリの無駄になります。常に 1 秒に 1 回フラッシュ (この言葉は中国語で何と言いますか?) されるため、1 秒以上に設定する必要はありません。通常は 8M ~ 16M で十分です。小さなアプリケーションはより小さく設定できます。 innodb_flush_log_at_trx_commit
Innodb が MyISAM より 100 倍遅いと不満を抱いていますか?この値を調整するのを忘れている可能性があります。デフォルト値の 1 は、トランザクションのコミットまたはトランザクション外の命令ごとにログをハードディスクに書き込む (フラッシュ) 必要があり、非常に時間がかかることを意味します。特にバッテリー バックアップ キャッシュ (バッテリー バックアップ キャッシュ) を使用している場合に注意してください。多くのアプリケーション、特に MyISAM テーブルから転送されるアプリケーションでは、これを 2 に設定しても問題ありません。これは、ハードディスクに書き込むのではなく、システム キャッシュに書き込むことを意味します。ログは依然として毎秒ディスクにフラッシュされるため、通常は 1 ~ 2 秒以上の更新が失われることはありません。 0 に設定すると高速になりますが、MySQL がハングアップした場合でもトランザクション データが失われる可能性があります。一方、値 2 はオペレーティング システム全体でのみ機能します。
データが失われる可能性があるのは、ハングした場合のみです。 この記事では、MySQL の挿入パフォーマンスの最適化に関する関連する概要について説明します。詳細については、PHP 中国語 Web サイトを参照してください。
関連する推奨事項:
排他的論理和 (XOR) を使用して php でファイルを暗号化/復号化する方法
以上がmysql 最適化挿入パフォーマンスの関連概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。