2012-11-02 54 views
1

在nHibernate中为表主键使用GUID而不是整数标识的开销是多少?nhibernate guid性能

使用的主要原因是表格id对用户面临的数据的混淆。当天

回答

0

影响到天级的操作,如GetById查找前50条过滤记录,删除更新 ...为零。根本没有可衡量的差异。

什么会影响很多是数据库 - 存储。整数存储在4个字节中,Guid消耗16个。因此,在每百万行中,您将需要12 MB以上的存储空间。如果这样的实体引用其他实体,则每个引用的表又是12 MB。 当这些列用于索引...空间可能越来越多。

因此,在更大规模的情况下,SQL服务器将不得不扫描更大的数据。例如MS SQL Server实际上是针对int类型进行优化的。 (包括bigint,shortint,tinyint)。

,但说实话,我们使用这两种方法,以及性能问题是总是在别处...

我将根据INT每次上投票支持主键 - 如果可能的话。

稍后将MVC路由从controller \ action \ id更改为其他内容,但保留ids int。您可以引入GUID作为属性(消耗一些空间,但只有一个空间,而不是引用表中),并将路由更改为controller \ actin \ uniqueGuid,并在业务层上调用GetByGuid(如果确实需要混淆用户)。