当前位置:七道奇文章资讯数据防范MySQL防范
日期: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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .