# Запровадила впорядковані за часом ідентифікатори UUID v7 (PostgreSQL 18) як ключі сутностей, щоб зменшити фрагментацію індексів B‑tree та пришвидшити запити.

2025

**Ситуація.** Кожній сутності потрібен унікальний id, і за звичкою беруть випадковий UUID. Біда в тому, що випадкові id розлітаються по всьому B‑tree‑індексу. Вставки розпорошуються, індекс фрагментується, і зі зростанням таблиць за це платять і записи, і сканування діапазонів. На платформі, яка має й далі зростати, це повільний витік, якого краще не закладати від самого початку.

**Завдання.** Зберегти глобальну унікальність UUID, але позбутися фрагментації, яку спричиняє випадковість.

**Дія.** Стандартом став UUID v7, упорядкований за часом: старші біти — це мітка часу, тож нові рядки лягають в індекс по порядку, а не розлітаються по ньому, як дріб. У PostgreSQL 18 це є нативно — функція uuidv7(); її обгорнуто в невелику функцію uuid_generate_v7(), щоб той самий виклик коректно працював і на Azure Flexible Server, а потім зроблено значенням за замовчуванням для первинних ключів сутностей у всій схемі. Нічого екзотичного: таке рішення дешево ухвалити на початку й болісно впроваджувати заднім числом.

**Результат.** Id лишилися глобально унікальними, індекс перестав фрагментуватися, як це буває з випадковими UUID, а вставки в порядку часу й запити за діапазоном стали швидшими — рівномірно, на всіх таблицях, і більше ніхто не мусить про це думати. На додачу кожна сутність отримала ключ, за яким можна сортувати за часом, — задарма.

---

- Роль: Інженер баз даних
- Категорії: [Backend‑розробка](https://data.engineer.company/uk/categories/backend/), [Бази даних](https://data.engineer.company/uk/categories/databases/), [PostgreSQL](https://data.engineer.company/uk/categories/postgresql/), [Інженерія даних](https://data.engineer.company/uk/categories/data-engineering/), [Оптимізація продуктивності](https://data.engineer.company/uk/categories/performance/)
- Послуги: [Проєктування та моделювання баз даних](https://data.engineer.company/uk/services/database-design/), [Оптимізація продуктивності баз даних](https://data.engineer.company/uk/services/database-performance/)

<https://data.engineer.company/uk/portfolio/adopted-uuid-v7-time-ordered-identifiers-postgresql-18-64/>
