ホームページ > バックエンド開発 > PHPチュートリアル > トランザクションによって、複数の値を使用した MySQLi INSERT 操作がどのように大幅に高速化されるのでしょうか?

トランザクションによって、複数の値を使用した MySQLi INSERT 操作がどのように大幅に高速化されるのでしょうか?

DDD
リリース: 2024-12-17 19:38:11
オリジナル
265 人が閲覧しました

How Can Transactions Significantly Speed Up MySQLi INSERT Operations with Multiple Values?

複数の値を使用した MySQLi での効率的かつ安全な INSERT 操作

データベースへの大量のデータの挿入は、特に次の場合にパフォーマンス上の課題となる可能性があります。 SQL インジェクション攻撃に対するセキュリティを維持することになります。 PHP と MySQLi は、データの整合性を確保しながらこの問題に取り組むためのさまざまなアプローチを提供しています。

提供されたコードでは、配列内の値ごとにループ内でパラメーターを準備してバインドするという単純なアプローチが使用されています。ただし、この方法では、プロセスが反復されるため、大規模なデータセットのパフォーマンスの問題が発生する可能性があります。

推奨される手法は、トランザクションを利用することです。トランザクションは複数の操作を 1 つのユニットにグループ化し、それらがすべて適用されるか、まったく適用されないことを保証します。最適化されたコード

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$mysqli->query("COMMIT");
ログイン後にコピー

に示すように、トランザクション内に挿入クエリを含めることで、パフォーマンスを大幅に向上させることができます。トランザクションにより、各クエリを個別に実行するオーバーヘッドが削減され、実行時間が短縮されます。

さらに、最適化されたコードは、これらの操作をループの外で実行することにより、prepare() と binding_param() の呼び出しの数を最小限に抑えます。これにより、処理時間がさらに短縮されます。

パフォーマンス テストの結果

これらの最適化の有効性を実証するために、Web サーバーで 10,000 回の反復テストが実施されました。結果は次のとおりです。

  • トランザクションなし: 226 秒。
  • トランザクションあり: 2 秒。

トランザクションを使用すると、次の 2 つの順序になりました。マグニチュードの速度が向上し、大規模なデータセットを扱う際のパフォーマンス向上の可能性を示しています。

以上がトランザクションによって、複数の値を使用した MySQLi INSERT 操作がどのように大幅に高速化されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート