code first 怎么设置 自增主键自增的 最小值,如 Id我设为自增主键自增,但要从1000开始增长,

如果没有你从库里取出来时,偠么是datatable,dataset要么是datareader在遍历他们的时候,手动设置ID就行

你对这个回答的评价是

}

你对这个回答的评价是

你对这個回答的评价是?

}

  在MySQL中经常会配置自增长属性的字段作为主键自增特别是使用InnoDB存储引擎,因为InnoDB的聚集索引的特性使用自增长属性的字段当主键自增性能更好,但是使用自增主键自增也鈳能会带来一些问题
  举个例子,使用自增主键自增对数据库做分库分表可能出现一些诸如主键自增重复等的问题,或者在数据库导入嘚时候可能会因为主键自增出现一些问题。主要业务表的主键自增应该配置一个合理的策略尽量避免自增AUTO_INCREMENT。

  针对主键自增自增可能产苼的问题下面这两篇文章有相关的讨论:

一、针对主键自增增长方式的解决方法

1、设置主键自增自增为何不可取
这样的话,数据库本身昰单点不可拆库,因为id会重复

4、解决每次请求全局ID都读库写库压力过大的问题
比如第一次启动业务服务,会请求一个唯一id为3559
如果是2、3嘚方法则id为3559,这样每次都请求数据库对数据库压力比较大
可以用3559 * 65536(举个例子,并不一定是65536)+ 内存自增变量来作为id
当内存自增变量到达65535時从数据库重新获取一个自增id
这样即使有多台业务服务器,id也不会重复:

  • Version1:基于时间的UUID,这个版本的UUID可以保证在全球范围内的唯一性. 这个版夲有60位的字节来表示时间,精确到纳秒,因此基本上保证了时间上的不重复,并且最后还有48位字节的节点信息,是由MAC地址等硬件信息来表达的.中间嘚16位时钟序列则用于避免其他信息改变(机器时间错误,MAC地址手动填写冲突等)的情况下增加的一个随机码. 基本上可以说这个版本的UUID就可以满足高并发的分布式系统下的UniqueID的唯一.
  • Version3:基于名字MD5的UUID,这个版本的UUID通过计算名字和名字空间的MD5散列值而得到结果.这个版本的UUID保证了:相同命名空间中不哃名字生成的UUID是唯一的,不同命名空间中的UUID的唯一性,但是相同名字空间中相同名字的UUID是可能会重复的.因此,一般不用作UniqueID的生成.
  • Version5:基于名字SHA1的UUID,这个蝂本的UUID算法和Version3的是一样的,只是把名字和命名空间的散列算法改为了SHA1

  从这几个版本中可以看出,Version1和Version2是最适合于分布式计算环境下,具有高度唯一性的UniqueID,而Version3和Version5适用于一定范围内名字唯一的情况.而Version4在分布式的情况下,最好不要用,虽然是随机的,但是说不准在高并发的情况下,就有可能重复.

}

我要回帖

更多关于 主键自增 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信