首页 > 其他分享 >Abp为什么要用IGuidGenerator.Create()而不用Guid.NewGuid()

Abp为什么要用IGuidGenerator.Create()而不用Guid.NewGuid()

时间:2023-01-19 13:33:57浏览次数:49  
标签:Create 聚簇 IGuidGenerator Abp 索引 Guid NewGuid

InnoDB主键索引类型为聚簇索引。按照聚簇索引排列顺序,数据是按顺序紧密相连的。
对有序主键查询一定范围数据,数据库可以从更少的数据块中提取数据,节省了大量的IO操作,提高查询效率。

而Guid.NewGuid()生成的Guid是乱序的,不能利用聚簇索引的特性,会导致查询效率降低。

ABP 提供IGuidGenerator,默认生成顺序Guid值,解决了聚集索引的性能问题。建议用IGuidGenerator设置Id,而不是Guid.NewGuid(),如果你不设置Id,仓储库默认会使用IGuidGenerator。

IGuidGenerator实现的源码:

https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.Guids/Volo/Abp/Guids/SequentialGuidGenerator.cs

不同数据库对Guid的表现形式不同(”例如mysql是char(36),oracle是row(16)”),所以排序规则也不同。
需要对不同数据库类型的排序规则,制定对应生成顺序Guid的规则。

参考

https://www.cnblogs.com/CameronWu/p/guids-as-fast-primary-keys-under-multiple-database.html

标签:Create,聚簇,IGuidGenerator,Abp,索引,Guid,NewGuid
From: https://www.cnblogs.com/flandresa/p/17061349.html

相关文章