(1). 自增序列;
(2). UUID()函数生成的随机值;
(3). 用户注册的唯一性帐号称号,字符串范例,平常长度为:40个字符;
(4). 基于一套机制生成相似自增的值,比方序列生成器;
那末我们接下来,再剖析下这四类属性各自作为表主键的优瑕玷:
(1)自增序列:从小到大 或从大到小的递次形式增添新值;数据范例也利于举行主键值比较;存储空间占用也相对最小,平常设置为:4个字节的INT范例或 8个字节的BIGINT范例;如果想举行数据程度拆分的话,也能够借助设置mysqld实例的2个参数:auto_increment_increment 和 auto_increment_offset;别的,唯一瑕玷就是自增序列是一个表级别的全局锁,在5.0系列大规模并发写的时刻,因锁开释机制的题目轻易涌现瓶颈,然则5.1系列做了革新,基本上不存在此题目;
(2)UUID()函数:值为随机性+牢固部份,其值发生是无序的,且统一台效劳器上发生的值雷同部份为77.8%;发生的值字符个数为36,按utf8编码盘算,占用的存储空间为36个字节;关于数据程度拆分支撑,无需特别设置;
(3)运用用户注册的帐号称号,字符串范例,其值的发生依靠用户输入,为此数据基本上为无序增添,字符串的长度也是不定的,只能经由过程前段手艺掌握最短最大长度值的限定,对程度拆分支撑,无需做特别设置;
(4)序列生成器的架构,相似自增序列,不过须要借助分外的开辟工作量,以及供应一个第三方的效劳,能够躲避自增序列的字增全局锁的题目,进步并发,对数据程度拆分能够更好地支撑;
(5)双主复制架构的概任性遇到的场景:主效劳器的数据实行胜利,而没有复制到在线备用效劳器时,出题目的几率确切存在,其他范例的做法,也必需人工过问处理,都无简朴且合理的自动化方法,以上四种方法都没法躲避;
经由过程四种属性值作为主键的优瑕玷剖析,以及对照前面我们论述的主键须要的优异素养,如果不斟酌程度拆分的题目,带来分外设置上的贫苦,则自增序列是最好的主键字段挑选;用户的注册帐号自身请求唯一性且非空的场景下,则能够作为主键字段的挑选;如果斟酌程度拆分的题目,则采纳自增序列生成器的架构,异常易用和牢靠的完成体式格局,发生的值是最好主键字段的挑选;
以上就是mysql的主键有哪几种的细致内容,更多请关注ki4网别的相干文章!