ON DUPLICATE KEY にもかかわらず、連続した自動インクリメント値を維持する
ON DUPLICATE KEY UPDATE 句を使用して InnoDB の自動インクリメント機能を利用する場合、重複したキーが挿入された場合でも、自動インクリメント フィールドがインクリメントし続ける状況が発生する場合があります。これにより、主キー値のシーケンスにギャップが生じる可能性があります。
この問題に対処するには、innodb_autoinc_lock_mode 構成設定を「0」に調整します。これにより、InnoDB が「従来の」自動インクリメント ロック モードを使用するように設定され、すべての INSERT ステートメントで AUTO_INCREMENT カラムに連続した値が割り当てられるようになります。
SET innodb_autoinc_lock_mode = 0;
ただし、このアプローチでは連続した値が保証されることに注意してください。値が自動インクリメントされると、パフォーマンスに影響を与える可能性があります。従来の自動インクリメント ロックは、テーブルの範囲ロックを取得するため、より多くのリソースを消費します。
自動インクリメント ID の主な目的は、行に一意の識別子を提供することであり、維持することではないことを覚えておくことが重要です。特定のシーケンス。アプリケーションでは、行の順序を決定するために自動インクリメント フィールドに依存しないでください。代わりに、別のタイムスタンプまたはその他の適切なメカニズムを使用して挿入順序を追跡することを検討してください。
以上がON DUPLICATE KEY UPDATE で連続した自動インクリメント値を確保するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。