2012-03-04 72 views
2

使用GUID主要基於生成全局唯一標識符的需求。從理論上講,當我們的數據庫中有一個表(帶有ID)時,它可能會很有用,而且我們會定期將來自外部系統的記錄導入到此表中。如果我們的本地數據庫和外部系統都使用GUID作爲其標識符,那麼應該沒有ID重複衝突。但是,使用GUID值作爲PK時性能會受到影響。它們較大(16字節),因此PK索引較大,可能會導致頁面拆分,因此,插入和檢索記錄需要比使用PK標識符的整數類型值更多的時間用於DBMS。在設計數據庫時,GUID的使用有什麼意義?

我懷疑有GUID作爲主鍵優於具有本地內部整數ID,並將導入記錄的GUID值存儲到我的表中的單獨列中。想聽聽在現實世界的例子,利弊:)

+1

請問這個答案的幫助? http://stackoverflow.com/questions/9377100/when-is-it-appropriate-to-use-uuids-for-a-web-project/9377235#9377235 – 2012-03-04 10:21:16

回答

2

使用GUID的意見有過在ASPFaq

  • 因爲它們是{或多或少}保證全面比較多個表/數據庫/實例/服務器/網絡/數據中心可以獨立生成它們,然後合併而不會發生衝突;
  • 對於某些複製形式是必需的;
  • 可以在數據庫之外生成(例如通過應用程序),因此您可以避免數據庫輪詢
  • 分佈式值可防止熱點(只要您不聚簇此列,這可能會導致異常高的碎片)。

傑夫阿特伍德也發佈了關於這個問題here

相關問題