Я думаю, что вам, возможно, нужно быть более конкретным с тем, что вы пытаетесь решить (в чем собственно проблема - почему не auto_increment ?, какова ваша предложенная схема? И т. Д.).Чтобы ответить на ваш внутренний вопрос:
- InnoDB хранит данные в индексе (кластеризованном индексе) на 16 тыс. Страницах.
Риск не вставлять последовательно - как минимум двасвернуть:
Если у вас недостаточно памяти, вам может потребоваться выполнить произвольный ввод-вывод, чтобы загрузить страницу с диска и вставить значение на эту страницу.
Возможно, на странице не осталось свободного места (InnoDB заполняет 93% и оставляет небольшой пробел для обновлений), что может привести к необходимости разделения страницы.Больше разделенных страниц = фрагментация / менее оптимальное использование таких вещей, как память.
Итак, я думаю, что, по крайней мере, если вы приблизительно последовательны (1), это не касаетсяиндекс первичного ключа (все еще может быть истинным для любых уникальных индексов).Вам просто нужно беспокоиться о (2).
Почему я сказал, что понимание проблемы важно, потому что есть много способов сделать это, кроме длинных GUID.С одной стороны, BIGINT в MySQL меньше, чем любой тип данных, который вы, вероятно, будете использовать, но имеет диапазон 18 квинтиллионов.Вы можете выделить «порции» ключевого пространства N тысяч за один раз рабочим узлам и гарантировать отсутствие дубликатов.Если рабочий узел выходит из строя и не использует весь фрагмент, который был выделен, ну и что.Это не имеет значения.