ホームページ >データベース >mysql チュートリアル >SQL Server 2012 の ID 増分が急激に増加するのはなぜですか?
SQL Server 2012: 予期しない ID インクリメント動作
この記事では、整数列の ID 増分が予想される 1 の増分ではなく、予期せず 100 の倍数に跳ね上がるという SQL Server 2012 の問題について説明します。この異常な動作は、多くの場合、システムの再起動によって引き起こされます。
根本原因:
この問題は、SQL Server 2012 のパフォーマンスの最適化に起因します。この問題は、キャッシュを利用して IDENTITY 値を事前に割り当てます。 デフォルトのキャッシュ サイズは 1000 です。
結果:
サーバーの再起動時に、このキャッシュ内の未割り当ての値はすべて破棄されます。これにより、データベースが更新されたキャッシュから新しい値を割り当てるため、新しい行が挿入されるときに ID シーケンスにギャップが生じます。
解決策と緩和戦略:
完全にギャップのないシーケンスは保証されませんが、いくつかの戦略で問題を最小限に抑えることができます。
NEXT VALUE FOR
を使用します。ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
を実行して、影響を受けるデータベースのキャッシュを無効にします。重要な考慮事項:
これらの方法のいずれも、同一性配列のギャップを完全に防ぐことはできないことを理解することが重要です。 絶対的なギャップレス ID 値を必要とするアプリケーションの場合は、行タイムスタンプやカスタム キー生成メカニズムなどの代替アプローチが推奨されます。
以上がSQL Server 2012 の ID 増分が急激に増加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。