私は最近、オフライン シナリオ用のマージ レプリケーションを備えたアプリケーションの作業を開始しました。pk およびクラスタリング インデックスとして機能する int ID 列があります。また、レプリケーションで必要になるため、各テーブルに uniqueidentifier 列があります。フィールドでは、ID 列が原因で、1 つ以上のサブスクリプション データベースで ID 範囲が不足するという問題に直面することがあります。次に、サポートが関与し、そのテーブルの圧縮、サブスクリプションの再初期化などに多くの時間を費やします。この問題を取り除くには、2 つの解決策があります。1. int の代わりに BigInt 列を使用し、ID を保持します。これにより範囲が広がり、この問題が二度と発生しないことを願っています。2. ID 列を取り除き、uniqueidentifier 列を pk およびクラスタリング インデックスとして機能させます。この列には、newseqeuntialID() が既に取り込まれています。これにより、問題が完全に解消されます。これにより、テーブルから 1 つの列がなくなるため、テーブル全体のサイズも縮小されますが、外部キー インデックスやその他の非クラスター化インデックスのサイズが増加します。
いくつかの負荷テストを行ったところ、タイミングに関しては bigint が少し先行していましたが、大きな違いはありませんでした。
これらの 2 つのオプション、または私が思いつかなかったその他のオプションについてどう思いますか?