MySQL:如何生成uuid_short?

时间:2013-02-28 11:26:09

标签: mysql

我有MySQL 5.5.24。 Сallinguuid_short()几次我得到一个递增的值:

mysql> select uuid_short();
+-------------------+
| uuid_short()      |
+-------------------+
| 22851044396498953 |
+-------------------+
1 row in set (0.00 sec)

mysql> select uuid_short();
+-------------------+
| uuid_short()      |
+-------------------+
| 22851044396498954 |
+-------------------+
1 row in set (0.00 sec)

但是manual说:

The UUID_SHORT() return value is constructed this way:
  (server_id & 255) << 56
+ (server_startup_time_in_seconds << 24)
+ incremented_variable++;

似乎“server_startup_time_in_seconds”或“server_id”都没有变化。 (我更改了@@global.server_id系统变量,但没有效果。)

有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

在我看来,函数确实返回了指定的内容。服务器ID和启动时间是服务器特定值,并且(通常)只要服务器正在运行就不会更改。短UUID的最不重要部分是递增值。 所以我假设在服务器启动之后,创建了UUID的种子,取得了左移服务器ID和左移启动时间。每次创建UUID时,此值都会递增并返回。这解释了为什么更改@@ global.server_id变量无效。