2012-03-04 5 views
2

GUIDの使用は、主に、グローバルに一意の識別子を生成する必要性に基づいています。理論的には、データベースにテーブル(ID付き)があり、外部システムからレコードをこのテーブルに定期的にインポートするときに便利です。ローカルデータベースと外部システムの両方で識別子にGUIDを使用すると、IDの重複の競合は発生しません。ただし、PKとしてGUIDの値を使用すると、パフォーマンスが低下します。それらはより大きい(16バイト)ので、PKインデックスが大きいため、ページ分割が発生する可能性があるため、レコードの挿入と取り出しの両方に、PK識別子の整数型値を使用するよりもDBMSに時間がかかります。データベースの設計時に、GUIDの使用はどこで理にかなっていますか?

プライマリキーとしてGUIDを使用することは、ローカルの内部整数IDを使用するよりも、テーブルの別の列にレコードをインポートするためのGUID値を格納するよりも優れています。現実の世界の例、賛否両論でGUIDの使用上の意見を聞きたいです:)

+1

を掲載しているこの回答の助けをしていますか? http://stackoverflow.com/questions/9377100/when-is-it-appropriate-to-use-uuids-for-a-web-project/9377235#9377235 –

答えて

2

彼らは{多かれ少なかれ}に保証されているのでASPFaq

  • 以上の包括的な比較があります複数のテーブル/データベース/インスタンス/サーバ/ネットワーク/データセンターがそれらを独立して生成し、衝突なしにマージすることができます。
  • 一部の形式の複製に必要です。
  • DBラウンドトリップを回避できるようにデータベース外で生成することができます(
  • 分散値はホットスポットを防止します(この列をクラスタ化しないと、断片化が異常に高くなることがあります) )。

ジェフアトウッドもこの問題についてhere

関連する問題