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

2025

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

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

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

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

---

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

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