SQL サーバーに、毎日約 400 ~ 500 のレコードを格納するために使用される大きなトランザクション テーブルがあります。PK 列で使用するデータ型は何ですか? PK 列には数値が格納されます。これには整数が適しているように見えますが、毎日多くのレコードがあるため、整数の最大値を超えてしまうのではないかと心配しています。
現在、PK 列に整数データ型を使用しています。
SQL サーバーに、毎日約 400 ~ 500 のレコードを格納するために使用される大きなトランザクション テーブルがあります。PK 列で使用するデータ型は何ですか? PK 列には数値が格納されます。これには整数が適しているように見えますが、毎日多くのレコードがあるため、整数の最大値を超えてしまうのではないかと心配しています。
現在、PK 列に整数データ型を使用しています。
INT
1 から始まるtype を使用すると、 20 億行を超える可能性のある行を取得できます。これは、ほとんどの場合、十分すぎるはずです。ではBIGINT
、およそ922 千兆(15 個のゼロを含む 922 - 922,000 億) が得られます。これで十分ですか??
1 から始まるを使用し、INT IDENTITY
毎秒行を挿入すると、20 億の制限に達するまでに 66.5年かかります....したがって、1 日あたり 400 ~ 500 行の場合、可能な数を使い果たすまでに何世紀もかかります。値... 1日あたり1'000行を取得します- 5883年間は問題ないはずです-十分ですか?
1 から始まるa を使用し、BIGINT IDENTITY
毎秒 1,000 行を挿入すると、922,000 兆の制限に達するまでに、気が遠くなるような 2億 9,200 万年が必要になります ....
詳細については、MSDN Books Onlineを参照してください (すべてのオプションを含む) 。
数学は私の得意分野ではなかったので、ここで間違っているかもしれませんが、bigint を使用すると、最大サイズは 2^63-1 (9,223,372,036,854,775,807) になります。
したがって、たとえば 500 で割ると、おおよその日数分のレコードが得られ、18446744073709600 日分の 500 の新しいレコードが得られます。
もう一度 365 で割ると、50539024859478.2 年分の 1 日 500 レコードが得られます
そう (((2^63-1) / 500) / 365)
それが私が愚かではない場合、それは多くの日です:-)