ホームページ >データベース >mysql チュートリアル >SQL Server 2012 の ID 列が再起動後に 100 秒ずつ増加するのはなぜですか?
SQL Server 2012 の自動インクリメント列の異常な増加の問題
SQL Server 2012 では、異常な動作が観察されました。「Fee」テーブルの「ReceiptNo」列の自動インクリメント値が断続的に 100 ずつ増加します。これは、自動インクリメント列の通常の増分パターンと矛盾します。
異常な動作の詳細:
理由:
この動作は、SQL Server 2012 で導入されたパフォーマンスの向上の結果です。デフォルトでは、自動インクリメント値を int 列に割り当てるときに、データベースは 1000 個の値をキャッシュするようになりました。再起動後、キャッシュされた未使用の値が失われる可能性があり、自動インクリメント シーケンスにギャップが生じる可能性があります。
ドキュメント参照:
SQL Server ドキュメントの説明:
「パフォーマンス上の理由から、SQL Server は自動インクリメント値をキャッシュする場合があり、データベースの障害またはサーバーの再起動中に、割り当てられた値の一部が失われる可能性があります。これにより、挿入中に自動インクリメント値にギャップが生じる可能性があります」 ."
考えられる解決策:
自動インクリメント列のギャップが懸念される場合は、次の回避策を検討してください:
重要なヒント:
これらのソリューションは完全にギャップのない動作を保証するものではないことを理解することが重要です。自動インクリメント列自体は、障害やロールバックされたトランザクションによるギャップのないシーケンスを保証しません。真にギャップのない値を得るには、カスタム アルゴリズムや外部キー ジェネレーターなどの他のソリューションを検討してください。
以上がSQL Server 2012 の ID 列が再起動後に 100 秒ずつ増加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。