1

MySQL5.5.24を使用しています。uuid_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)

しかし、マニュアルには次のように書かれています。

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システム変数を変更しましたが、効果がありませんでした)。

誰かが理由を知っていますか?

4

1 に答える 1

1

関数が指定されたものを返すように思えます。サーバー ID と起動時間はサーバー固有の値であり、(通常) サーバーが実行されている限り変更されません。短い UUID の最下位部分は増分値です。したがって、サーバーの起動後に、左シフトされたサーバー ID と左シフトされた起動時間を取得して、UUID のシードが作成されると仮定します。この値は、UUID が作成されるたびにインクリメントされて返されます。これは、@@global.server_id 変数を変更しても効果がない理由を説明しています。

于 2013-02-28T12:22:55.090 に答える