server2008中guid做主键跟聚集索引是否合适
发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
server2008中guid做主键和聚集索引是否合适?
单表的数据可能会达到2000万,会有多个表之间的关联查询,多用户同时几百条的数据插入,如下建表,guid做主键和聚集索引,对性能有多大影响?
CREATE TABLE Test_Guid
(
Guid uniqueidentifier not null default(newsequentialid()),
TestId int not null,
TestText ntext not null,
TestDateTime datetime default getdate(),
CONSTRAINT PK_Guid PRIMARY KEY (Guid)
)
GO
主要是想了解一下在实际项目中有没有人采用这种方式,那种简单的增加10万条记录的也测试过,guid大多情况会比int 慢那么一点点,如果数量到了千万级或亿万级,表又是很多的时候,性能会有多大影响呢?
------解决思路----------------------
看你是单线程测试还是多线程测试
网上有非常多的测试资料,大概原理你知道了,甚至有很多相反的结论,如果再分场景看,明白其中的原理,就不会有那么多的疑惑了
1,首先从主键方面说,int做id和guid做主键,相比来说int肯定占优势,因为int是四个字节,guid是16个字节,当然现实情况中也有出现int满了,装不下更多数据的情况,可以换做bigint
2,从聚集索引看,int适合,这里只是跟guid相比,guid是随机的,作为聚集索引,必然会引起大量的也拆分和碎片,对数据的读取有致命的伤害
3,从插入数据来看,如果是有并发的情况,guid比较有优势,因为int自增id做聚集索引的情况下,并发写入的时候必然会引起热点页问题,也就是说多个会话的都相对集中地网一个区域插入数据,插入数据的时候是有一个page级别的不兼容的锁的。这会引起插入的效率遍地。对于guid来说,因为是随机的,可以将多个会话的写入动作分散到多个数据页上,这一点看是guid的优势
以上是我简单想到的,实际情况来看,个人认为这两个ID结合起来使用更好,用guid做主键,不做聚集索引,用int ID 做聚集索引,当然根据业务情况,更多的时候是把创建时间之类的递增的列做聚集索引,查询的时候可以更好地使用到聚集索引。
你可以参考微软给出的实例数据库,看看人家是怎么设计的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
从 Excel 导入到 SQL 的大数据效率问题
导入数据量:10W。
环境:Sql server 2008 R2
导入用时 29分钟。
每条执行语句:
IF EXIS...
-
链接服务器 删除时,提示 提供程序内存不足
链接服务器连一个oracle 数据库
表 tb 其中一个列是 blob
现在删除 tb 的一行...
-
一个简单的存储过程报错,求大神指教
--Drop PROCEDURE [dbo].[FenYe]
CREATE PROCEDURE [dbo].[FenYe]
@curPage int, --当...
-
如何在调试时清除临时表
用临时表时碰到错误
Msg 2714, Level 16, State 6, Line 3
There is already an object named '#TblPr...
-
还原数据库时,出现怪事了....
我用的SQL的版本是 Microsoft Corporation 版本8.0
企业管理器---找到相应的数据库名---右键---...
-
动态列!急!
下面的存储是我举例子的,并不正确!我想实现当我输入参数,2012,1,2012,12 的时候,Ytd就
得到那参数区间的和,问题就在,如...
-
为庆祝PASS北京分会成立,12月份在微软中国举办第一次线下活动。欢迎报名!
The Professional Association for SQL Server (简称PASS...
-
关于数据分页问题。
朋友说,微软自带的ListView数据分页不能使用,效率太低,查询要把整个数据库查一遍,说是要Row_Number。
那么Row_N...
-
sql查询优化
表 table 有24个字段,3万条数据,现在我查询该表的所有数据
select * from table order by id
查询时间在1分20秒左右...
-
sql 多张表的列合并成一条数据
比如
A表 有下列
name stock(库存)
苹果 10
香蕉 20
B表
name import(入库)
苹果...