ホームページ > データベース > mysql チュートリアル > SQL Server 2012 の自動インクリメント列で値がスキップされるのはなぜですか?

SQL Server 2012 の自動インクリメント列で値がスキップされるのはなぜですか?

DDD
リリース: 2025-01-18 02:47:10
オリジナル
634 人が閲覧しました

Why Do My SQL Server 2012 Auto-Increment Columns Skip Values?

SQL Server 2012 の自動インクリメント列の値が時々ジャンプする

SQL Server 2012 では、整数列の自動インクリメントの動作に変更が導入され、その結果、番号付けシーケンスが時々ジャンプすることがありました。この現象は、データベース エンジンに導入されたシーケンスに起因すると考えられます。

自動インクリメントメカニズムは、潜在的な挿入のために値の範囲を予約するようになりました。範囲内の最大値に達すると、新しい範囲が割り当てられるため、値が不連続になる可能性があります。

なぜこのようなことが起こるのでしょうか?

スキップ値は実際には失われません。潜在的な同時挿入または分散トランザクションのために保持されます。

解決策はありますか?

はい、2 つのオプションがあります:

  • トレース フラグ 272 を有効にする: このフラグは、生成されたすべての ID 値をログに記録します。これはパフォーマンスに影響を与える可能性があります。
  • キャッシュレス シーケンス ジェネレーターを使用する: この設定により、値が一度に 1 つずつ割り当てられ、連続した番号が得られます。

以上がSQL Server 2012 の自動インクリメント列で値がスキップされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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