日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库中使用自增量字段与Guid字段作主键的性能对比(补充篇)-----转

發(fā)布時間:2023/12/19 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库中使用自增量字段与Guid字段作主键的性能对比(补充篇)-----转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我在發(fā)表過“據(jù)庫中使用自增量字段與Guid字段主鍵的性能對比”這篇文章后,得到博客園各園友的很多評價,大家對我的測試方法也提出一些改進(jìn)的方法。讓我吃驚的是一園友提出:把guid和id的測試順序顛倒一下,看下結(jié)果。今天就再測試一下,歡迎各園友提出更好的測試方案。?????

1.測試環(huán)境  

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

  數(shù)據(jù)庫:MS SQL 2008 Express

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

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

  硬盤:WD 80G

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

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 = OFF) ON [PRIMARY] ) ON [PRIMARY] GO CREATE TABLE [dbo].[Table_Id]([Id] [int] IDENTITY(1,1) NOT NULL,[Value] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT [PK_Table_Id] PRIMARY KEY CLUSTERED ([Id] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO

首先看一下測試代碼:

Code


為了消除上面的顧慮,每次僅使用一種方式測試(每次都注釋不使用的代碼)。

1.1.自增Id的寫入測試。

?

1.2.Guid的寫入測試。

2.1.自增Id的讀取到DataTable測試

2.2.Guid的讀取到DataTable測試

3.1.自增Id的數(shù)據(jù)總數(shù)統(tǒng)計

3.2.Guid數(shù)據(jù)總數(shù)統(tǒng)計

4.1.自增Id的數(shù)據(jù)總數(shù)統(tǒng)計(手動找到第3000條數(shù)據(jù)的id,然后查詢)

4.2.Guid的數(shù)據(jù)總數(shù)統(tǒng)計(手動找到第3000條數(shù)據(jù)的id,然后查詢)

以上測試均屬本人電腦上的測試。每次的測試結(jié)果都是測試好幾次,然后才取其中的一組相對平均的結(jié)果。

補充(不是我不總結(jié),其實一些實際的應(yīng)用已經(jīng)在上一篇中總結(jié)過了,再整理一下吧):
????? 1.測試的結(jié)果Guid作為主鍵在以上測試的性能還是優(yōu)于自動增長Id的。對于Inner join的還沒有測試。
????? 2.對于使用那種類型作為主鍵,還要根據(jù)具體的需要。在數(shù)據(jù)庫遷移或者導(dǎo)入數(shù)據(jù)的時候自增量字段有可能會出現(xiàn)重復(fù),這無疑是一場惡夢,而Guid格式無疑是首選。但是,使用Guid格式比較復(fù)雜,對于程序高度比較麻煩,畢竟Guid比較難記。
????? 3.自動增長的Id使用的是int型或者bigint型,它們分別占用存儲空間為4個字節(jié)和8個字節(jié),Guid是uniqueidentifier類型,它占用16個字節(jié)。從存儲空間上來說,自動增長的Id更節(jié)省空間。?????
????? 4.如果要搞分布式數(shù)據(jù)庫的話,這自增量字段就有問題了。因為,在分布式數(shù)據(jù)庫中,不同數(shù)據(jù)庫的同名的表可能需要進(jìn)行同步復(fù)制。一個數(shù)據(jù)庫表的自增量值,就很可能與另一數(shù)據(jù)庫相同表的自增量值重復(fù)了。

????? 我個人還是比較喜歡使用Guid作主鍵,因為它比較唯一,不管是任務(wù)時候它都是唯一的,數(shù)據(jù)庫的導(dǎo)入與導(dǎo)出都不會出現(xiàn)主鍵重復(fù)的現(xiàn)象。
我個人的一些問題:

????? 1.我使用的是windows Live Writer寫的文章,為了粘貼代碼的方便性,我使用from Visual Studio插件粘貼代碼,但是如果代碼中含有中文,例如注釋,粘貼后,每個漢字后面都會多出一個“?”,這個問題不知道怎么解決,我通過設(shè)置編碼方式還 是不能解決問題。

????? 2.在Windows Live Writer中怎樣設(shè)置代碼(打包后上傳后)的下載的鏈接。

????? 另外:向喜歡數(shù)據(jù)庫的園友,推薦一篇:SQL Server 查詢處理中的各個階段
????? 關(guān)于自動增長Id與Guid的介紹請參見:據(jù)庫中使用自增量字段與Guid字段主鍵的性能對比

????? 測試代碼

總結(jié)

以上是生活随笔為你收集整理的数据库中使用自增量字段与Guid字段作主键的性能对比(补充篇)-----转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。