UUID v4 против UUID v7 — какой выбрать?
UUID v7, стандартизированный в RFC 9562 (май 2024), устраняет главный недостаток UUID v4: низкую производительность индексов базы данных.
UUID v4 (Случайный)
UUID v4 использует 122 случайных бита и 6 фиксированных битов. Это гарантирует уникальность без координации, но создаёт идентификаторы, случайным образом разбросанные во времени. При использовании в качестве B-tree первичного ключа в базе данных случайные идентификаторы вызывают разделение страниц и фрагментацию индекса, снижая производительность записи.
UUID v7 (Временно-упорядоченный)
UUID v7 использует 48-битную Unix-метку времени в миллисекундах, за которой следуют случайные биты. Префикс метки времени делает UUID естественно сортируемыми по времени создания, решая проблему фрагментации B-tree. Ключи остаются глобально уникальными и могут генерироваться без координации.
Сравнение
| | UUID v4 | UUID v7 | |---|---------|---------| | Стандарт | RFC 9562 | RFC 9562 | | Сортируемый | Нет | Да (по времени) | | Производительность БД | Низкая | Хорошая | | Уникальный | Да | Да | | Раскрывает метку времени | Нет | Да (миллисекундная точность) |
Рекомендация: Используйте UUID v7 для первичных ключей базы данных и UUID v4, когда вы явно не хотите раскрывать время создания. Попробуйте оба в нашем UUID-генераторе.