メインコンテンツまでスキップ
バージョン: Latest-4.1

uuid_v7

VARCHAR 型の時系列順 UUID v7 を返します。UUID v7 は RFC 9562 で定義されています。ランダムに生成される UUID v4 と比較して、UUID v7 は時間順序を保持するため、データベースにおいてインデックスの局所性が向上し、断片化が軽減されるなど、より高いパフォーマンスが期待できます。

生成される UUID は 36 文字で構成され、5 つの 16 進数ブロックを 4 つのハイフンで連結した以下の形式です:xxxxxxxx-xxxx-7xxx-xxxx-xxxxxxxxxxxx。バージョンフィールドは常に 7 です。

この関数は非決定性関数であり、呼び出すたびに異なる UUID を生成します。

構文

uuid_v7()

戻り値

VARCHAR 型の値を返します。

mysql> SELECT uuid_v7();
+--------------------------------------+
| uuid_v7() |
+--------------------------------------+
| 019ba290-15ce-7f13-86b4-ebc97d2f72c0 |
+--------------------------------------+
1 row in set (0.01 sec)

UUID v7 のフォーマット

UUID v7 は RFC 9562 に準拠し、以下の構造を持ちます。

  • 48 ビット:Unix エポックのミリ秒タイムスタンプ(時間順要素)
  • 4 ビット:バージョンフィールド(固定値 7
  • 12 ビット:ランダムデータ
  • 2 ビット:バリアントフィールド(RFC 4122)
  • 62 ビット:ランダムデータ

この構造により、後に生成された UUID は、先に生成された UUID の後にソートされ、インデックス性能の向上につながります。

利点

  1. 時間順序付き:後から生成された UUID は、以前のものより大きな値になります。
  2. インデックス性能の向上:B-tree インデックスにおける局所性が向上します。
  3. 断片化の軽減:順次挿入によりページ分割が減少します。
  4. 一意性の確保:ランダムビットにより、同一ミリ秒内でも重複を防ぎます。

UUID v4 との比較

項目uuid_numeric() (v4)uuid_v7_numeric() (v7)
順序性ランダム時間順序付き
インデックス性能低い高い
断片化高い低い
タイムスタンプ情報なしあり(48 ビットのミリ秒)
Rocky the happy otterStarRocks Assistant

AI generated answers are based on docs and other sources. Please test answers in non-production environments.