據庫中使用自增量字段與Guid字段主鍵的性能對比
1.概述:
在我們的數據庫設計中,數據庫的主鍵是必不可少的,主鍵的設計對整個數據庫的設計影響很大.我就對自動增量字段與Guid字段的性能作一下對比,歡迎大家討論.
2.簡介:
1.自增量字段
自增量字段每次都會按順序遞增,可以保證在一個表里的主鍵不重復。除非超出了自增字段類型的最大值并從頭遞增,但這幾乎不可能。使用自增量字段來做主鍵是非常簡單的,一般只需在建表時聲明自增屬性即可。
自增量的值都是需要在系統中維護一個全局的數據值,每次插入數據時即對此次值進行增量取值。當在當量產生唯一標識的并發環境中,每次的增量取值都必須最此全局值加鎖解鎖以保證增量的唯一性。這可能是一個并發的瓶頸,會牽扯一些性能問題。
在數據庫遷移或者導入數據的時候自增量字段有可能會出現重復,這無疑是一場惡夢(本人已經深受其害).
如果要搞分布式數據庫的話,這自增量字段就有問題了。因為,在分布式數據庫中,不同數據庫的同名的表可能需要進行同步復制。一個數據庫表的自增量值,就很可能與另一數據庫相同表的自增量值重復了。
2.uniqueidentifier(Guid)字段
在MS Sql 數據庫中可以在建立表結構是指定字段類型為uniqueidentifier,并且其默認值可以使用NewID()來生成唯一的Guid(全局唯一標識符).使用NewID生成的比較隨機,如果是SQL 2005可以使用NewSequentialid()來順序生成,在此為了兼顧使用SQL 2000使用了NewID().
Guid:指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的,其算法是通過以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字生成。其格式為:04755396-9A29-4B8C-A38D-00042C1B9028.
Guid的優點就是生成的id比較唯一,不管是導出數據還是做分步開發都不會出現問題.然而它生成的id比較長,占用的數據庫空間也比較多,隨著外存價格的下降,這個也無需考慮.另外Guid不便于記憶,在這方面不如自動增量字段,在作調試程序的時候不太方便。
3.測試:
1.測試環境
操作系統:windows server 2003 R2 Enterprise Edition Service Pack 2
數據庫:MS SQL 2005
CPU:Intel(R) Pentium(R) 4 CPU 3.40GHz
內存:DDRⅡ 667 1G
硬盤:WD 80G
2.數據庫腳本






















it知識庫:數據庫中使用自增量字段與Guid字段作主鍵的性能對比,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。