Go наконец затаскивает uuid в stdlib. И сразу ставит дефолтом v4, тот самый рандомный, который размазывает вставку по индексу :-)
В апреле приняли proposal #62026. Парсер, конструкторы, всё как у google/uuid, который годами стоит почти в каждом сервисе и при этом полузаброшен. Казалось бы, радуйся.
Но
uuid.New() отдаёт v4. Чистый рандом. А сортируемый v7 надо звать руками через NewV7().Для приложения, которое пишет в Postgres, это не мелочь. Первичный ключ на v4 ложится в B-tree как попало: каждая вставка прыгает в случайную страницу, растут page split, индекс пухнет. v7 кладёт время в старшие биты, вставка идёт в хвост, локальность сохраняется. Разница на больших таблицах видна и в размере индекса, и в скорости вставки.
stdlib поставил дефолтом то, что безопаснее «вообще», а не то, что лучше для базы. Дефолты надо читать, а не доверять им :-)
