[技术讨论]对于百万条记录的数据库,用Guid做主键是否合适?

时间:2021-01-02 21:45:56
从设计的角度讲,如果将数据库主键的获取放到应用中去实现,要比用数据库自身特性临时产生主键要方便许多.
于是我想采用Guid作为表的主键,但Guid占16个字节,比numeric9个字节多了不少,对存储的要求就会很大,对查询也会有影响.
是否有人做过类似的大项目,请对比Oracle,SqlServer等数据库,说说将Guid引入后,在百万条记录的情况下,是否会给系统带来很大的性能损失???

19 个解决方案

#1


see Jimmy Nilsson's article

The Cost of GUIDs as Primary Keys
http://www.informit.com/articles/printerfriendly.asp?p=25862

#2


#3


学习

#4


很感谢Saucer提供的资源连接,关于这一点我知道肯定会有性能损失.虽然现在我的方案中已经放弃GUID,不过还是想听听其他的声音.

#5


看看。。。

#6


曾看过相关文章也说有性能影响,但程度有多深就不得而知了,attend this

#7


http://www.cnblogs.com/zhenyulu/articles/25326.aspx
http://www.cnblogs.com/zhenyulu/archive/2004/07/20/25816.html

#8


学习ing

#9


up
不分场合,不分地点,不分时间 大家宣传一下:
一组数据,日本对中国的依赖程度现排最前,特别是对中国市场的依赖,
如果中国人1个月不买日货,日本将有数千家企业面临破产。
如果中国人6个月不买日货,日本将有一半人失业。
如果中国人1年不买日货,日本经济结构彻底瓦解,日本还能这样嚣张吗!
你如果是中国人,不用你上战场当炮灰,
你要做的事很简单,就是不买日货。 
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/

#10


以前我们有一个系统采用的是自己的算法来计算的,很麻烦,
后来采用的是GUID,对于性能的影响,主要是因为GUID是无规律的吧,
如果做为数据库的聚族索引,插入时会影响效率;
如果数据量大,那么建立一些适当的索引查询效率会提高很多。

#11


看过一篇资料,用时间(精确到秒)+GUID前8位
在1,2秒之间生成前8位得相同得guid是不可能得,所以不会重复,而且对她索引得话有规律可寻

#12


学习

#13


学习!

#14


最好还是不要用

#15


存储空间确实是个问题。

#16


主要是性能上的问题

#17


什么时候的帖?还不结

#18


如果考虑性能,用GUID还不如用两个32bit的int的Random值乘起来快

#19


关注。。。学习。。。帮顶

#1


see Jimmy Nilsson's article

The Cost of GUIDs as Primary Keys
http://www.informit.com/articles/printerfriendly.asp?p=25862

#2


#3


学习

#4


很感谢Saucer提供的资源连接,关于这一点我知道肯定会有性能损失.虽然现在我的方案中已经放弃GUID,不过还是想听听其他的声音.

#5


看看。。。

#6


曾看过相关文章也说有性能影响,但程度有多深就不得而知了,attend this

#7


http://www.cnblogs.com/zhenyulu/articles/25326.aspx
http://www.cnblogs.com/zhenyulu/archive/2004/07/20/25816.html

#8


学习ing

#9


up
不分场合,不分地点,不分时间 大家宣传一下:
一组数据,日本对中国的依赖程度现排最前,特别是对中国市场的依赖,
如果中国人1个月不买日货,日本将有数千家企业面临破产。
如果中国人6个月不买日货,日本将有一半人失业。
如果中国人1年不买日货,日本经济结构彻底瓦解,日本还能这样嚣张吗!
你如果是中国人,不用你上战场当炮灰,
你要做的事很简单,就是不买日货。 
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/
抵制日货网络签名处:http://www.dzrhlm.com/book/

#10


以前我们有一个系统采用的是自己的算法来计算的,很麻烦,
后来采用的是GUID,对于性能的影响,主要是因为GUID是无规律的吧,
如果做为数据库的聚族索引,插入时会影响效率;
如果数据量大,那么建立一些适当的索引查询效率会提高很多。

#11


看过一篇资料,用时间(精确到秒)+GUID前8位
在1,2秒之间生成前8位得相同得guid是不可能得,所以不会重复,而且对她索引得话有规律可寻

#12


学习

#13


学习!

#14


最好还是不要用

#15


存储空间确实是个问题。

#16


主要是性能上的问题

#17


什么时候的帖?还不结

#18


如果考虑性能,用GUID还不如用两个32bit的int的Random值乘起来快

#19


关注。。。学习。。。帮顶

#20