nhibernate guid表现

时间:2012-11-02 20:24:22

标签: asp.net-mvc performance nhibernate guid

对于表主键,在nHibernate中使用GUID而不是整数标识的开销是多少?

使用的主要原因是对用户面向数据的表ID进行模糊处理。

1 个答案:

答案 0 :(得分:0)

GetById 查找前50个过滤记录,删除更新<等操作的日常影响em> ......零。根本没有可衡量的差异。

受影响的是数据库 - 存储。整数存储在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用户。