EFCore——主键(4)

一、主键

1、EFCore支持多种主键生成策略:自动增长;Guid;Hi/Lo算法等
2.自动增长。
    优点:简单;缺点:数据库迁移及分布式系统中比较麻烦;并发性能差
3.自增字段代码不能为Id赋值,默认为0,否则运行报错

二、Guid主键

1.Guid算法,生成一个全局唯一的Id。适合分布式系统,进行数据合并的时候很简单,
优点:简单,高并发;缺点:磁盘暂用空间大
2.Guid的值不连续。使用Guid类型做主键的时候,不能吧主键设置为聚集索引。因为聚集索引是按照顺序保存主键的。因此Guid做索引性能差。
比如Mysql的InnoDb引擎中主键是强制使用索引的。
有的数据库支持部分的连续的Guid
==在sqlserver中把Guid设置为聚集 索引;在mysql中,插入频繁的表不要使用Guid

三、其他方案

使用混合自增和Guid(不是复合主键)。把自增设置为表的主键,而在业务查询的时候把Guid作为主键,在和其他表关联的时候以及外部通讯的时候都是使用Guid,不仅能保留Guid的优点,还能减轻主键自增性导致主键值可被预测带来的安全问题

posted @ 2021-12-17 20:11  有诗亦有远方  阅读(119)  评论(0)    收藏  举报  来源