日期:2012-04-20 17:24:00 来源:本站整理
MySQL内置函数uuid和uuid_short简析[MySQL防范]
本文“MySQL内置函数uuid和uuid_short简析[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
有同学问到MySQL的uuid这个函数.扼要介绍一下.
用法
简单看到,这个值,每次履行都是差别的.
生陈法则
第1 2 3 段是与时间有关的.
time_low、time_mid、time_high_and_version转成16进制后辨别对应第1 2 3段.这个时间是从1582-10-15 00:00:00.00到当前时间的100ns值.(实际上系统只能取到切确us,再乘以10).所以你短时间持续履行的话,对比大概只有第一个值在改,实际上1 2 3都大概会改变.www.110hack.com
第4段是你启动这个MySQL后第一次履行select uuid()时的随机数,每次重启会改变.
第5段是mac值转过来的,同一个机械多实例的普通相同.假如mac值获得不到,则是一个随机值.
所以这个值可以认为是每次履行都不相同.并且差别实例之间也只有极细小概率反复.
Uuid_short
与uuid返回固定长度字符串差别, uuid_short的返回值是一个unsigned long long范例.MySQL启动后第一次履行的值是通过server_id << 56 + server_start_time << 24来初始化.server_start_time单位是秒. 之后每次履行都加1.
由于每次加1城市加全局mutex锁,因此多线程安全,可以当作sequence来用,只是初始值有点大.www.110hack.com
Sequence
MySQL没有Oracle那样的sequence,在不是很切确的情形下,可以考虑上面提到的uuid_short.有一些不足:
1、初始值太大,无法重设
2、存在一个问题是每次重启后第一次履行的值不是重启前的那个值+1
3、并且假如重启在1s内完成,大概呈现不但调递增(固然这个大概性微乎其微).
要满意上面的需求,可以考虑用udf实现.
以上是“MySQL内置函数uuid和uuid_short简析[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论