时间:2021-07-01 10:21:17 帮助过:172人阅读
简单看到,这个值,每次执行都是不同的。 生成规则第1 2 3 段是与时间有关的。 
与uuid返回固定长度字符串不同, uuid_short的返回值是一个unsigned long long类型。MySQL启动后第一次执行的值是通过server_id << 56 + server_start_time << 24来初始化。server_start_time单位是秒。 之后每次执行都加1。 由于每次加1都会加全局mutex锁,因此多线程安全,可以当作sequence来用,只是初始值有点大。Sequence MySQL没有Oracle那样的sequence,在不是很精确的情况下,可以考虑上面提到的uuid_short。有一些不足: 1、初始值太大,无法重设2、存在一个问题是每次重启后第一次执行的值不是重启前的那个值+13、而且如果重启在1s内完成,可能出现不单调递增(虽然这个可能性微乎其微)。 要满足上面的需求,可以考虑用udf实现。 作者 丁林.tb bitsCN.com