В последние годы UUID версии 4 стали почти стандартом «по умолчанию» для первичных ключей. Их любят за универсальность, распределённость и мнимую «безопасность». Но свежий и очень подробный разбор Эндрю Аткинсона заставляет взглянуть на эту практику без розовых очков — и цифры там, мягко говоря, пугающие. Я бы сказал так: UUID v4 — это отличный пример того, как удобство на уровне API может незаметно превратиться в инфраструктурную проблему на уровне базы данных. Где именно всё ломается На бумаге UUID v4 выглядит красиво: 128 бит, почти нулевая вероятность коллизий, можно генерировать где угодно — хоть в браузере, хоть в микросервисе. Но PostgreSQL живёт по своим физическим законам. B-Tree индекс — это упорядоченная структура. А UUID v4 по своей природе случаен. В результате: 🧱 Каждая вставка летит в случайное место индекса
🧠 Кэш забивается фрагментированными страницами
🔀 Page split происходят чаще, чем хотелось бы
🪵 WAL раздувается сильнее обычного В тесте с 10 млн строк разница м