色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

數(shù)據(jù)庫中使用自增量字段與Guid字段作主鍵的性能對比

據(jù)庫中使用自增量字段與Guid字段主鍵的性能對比

1.概述:

  在我們的數(shù)據(jù)庫設(shè)計中,數(shù)據(jù)庫的主鍵是必不可少的,主鍵的設(shè)計對整個數(shù)據(jù)庫的設(shè)計影響很大.我就對自動增量字段與Guid字段的性能作一下對比,歡迎大家討論.

2.簡介:

  1.自增量字段

      自增量字段每次都會按順序遞增,可以保證在一個表里的主鍵不重復。除非超出了自增字段類型的最大值并從頭遞增,但這幾乎不可能。使用自增量字段來做主鍵是非常簡單的,一般只需在建表時聲明自增屬性即可。

      自增量的值都是需要在系統(tǒng)中維護一個全局的數(shù)據(jù)值,每次插入數(shù)據(jù)時即對此次值進行增量取值。當在當量產(chǎn)生唯一標識的并發(fā)環(huán)境中,每次的增量取值都必須最此全局值加鎖解鎖以保證增量的唯一性。這可能是一個并發(fā)的瓶頸,會牽扯一些性能問題。

  在數(shù)據(jù)庫遷移或者導入數(shù)據(jù)的時候自增量字段有可能會出現(xiàn)重復,這無疑是一場惡夢(本人已經(jīng)深受其害).

      如果要搞分布式數(shù)據(jù)庫的話,這自增量字段就有問題了。因為,在分布式數(shù)據(jù)庫中,不同數(shù)據(jù)庫的同名的表可能需要進行同步復制。一個數(shù)據(jù)庫表的自增量值,就很可能與另一數(shù)據(jù)庫相同表的自增量值重復了。

  2.uniqueidentifier(Guid)字段

   在MS Sql 數(shù)據(jù)庫中可以在建立表結(jié)構(gòu)是指定字段類型為uniqueidentifier,并且其默認值可以使用NewID()來生成唯一的Guid(全局唯一標識符).使用NewID生成的比較隨機,如果是SQL 2005可以使用NewSequentialid()來順序生成,在此為了兼顧使用SQL 2000使用了NewID().

  Guid:指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的,其算法是通過以太網(wǎng)卡地址、納秒級時間、芯片ID碼和許多可能的數(shù)字生成。其格式為:04755396-9A29-4B8C-A38D-00042C1B9028.

   Guid的優(yōu)點就是生成的id比較唯一,不管是導出數(shù)據(jù)還是做分步開發(fā)都不會出現(xiàn)問題.然而它生成的id比較長,占用的數(shù)據(jù)庫空間也比較多,隨著外存價格的下降,這個也無需考慮.另外Guid不便于記憶,在這方面不如自動增量字段,在作調(diào)試程序的時候不太方便。

3.測試:

  1.測試環(huán)境

  操作系統(tǒng):windows server 2003 R2 Enterprise Edition Service Pack 2

  數(shù)據(jù)庫:MS SQL 2005

  CPU:Intel(R) Pentium(R) 4 CPU 3.40GHz

  內(nèi)存:DDRⅡ 667  1G

  硬盤:WD 80G

  2.數(shù)據(jù)庫腳本  

--自增量字段表
CREATE TABLE [dbo].[Table_Id](
    
[Id] [int] IDENTITY(1,1NOT NULL,
    
[Value] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
 
CONSTRAINT [PK_Table_Id] PRIMARY KEY CLUSTERED 
(
    
[Id] ASC
)
WITH (IGNORE_DUP_KEY = OFFON [PRIMARY]
ON [PRIMARY]

GO
--Guid字段表
CREATE TABLE [dbo].[Table_Guid](
    
[Guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_Table_Guid_Guid]  DEFAULT (newid()),
    
[Value] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
 
CONSTRAINT [PK_Table_Guid] PRIMARY KEY CLUSTERED 
(
    
[Guid] ASC
)
WITH (IGNORE_DUP_KEY = OFFON [PRIMARY]
ON [PRIMARY]

GO

it知識庫數(shù)據(jù)庫中使用自增量字段與Guid字段作主鍵的性能對比,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 岑巩县| 九寨沟县| 承德市| 金乡县| 文水县| 资溪县| 横山县| 遵义县| 长顺县| 吉首市| 洞头县| 澄城县| 莆田市| 富顺县| 晋宁县| 博乐市| 阿拉善左旗| 葵青区| 静安区| 金山区| 大庆市| 金山区| 泉州市| 澄迈县| 昌宁县| 枝江市| 东台市| 江都市| 平安县| 灌阳县| 遂昌县| 南江县| 台州市| 绵阳市| 大港区| 南陵县| 建平县| 东安县| 渝北区| 莱州市| 江津市|