Мы рассматриваем использование значений UUID в качестве первичных ключей для нашей базы данных MySQL. Вставляемые данные генерируются из десятков, сотен или даже тысяч удаленных компьютеров и вставляются со скоростью 100-40 000 вставок в секунду, и мы никогда не будем делать никаких обновлений.
Сама база данных, как правило, доходит до 50M записей, прежде чем мы начнем отбирать данные, а не массивную базу данных, но не слишком маленькую. Мы также планируем работать в InnoDB, хотя мы открыты для изменения, если есть лучший механизм для того, что мы делаем.
Мы были готовы пойти с UUID Java Type 4, но в тестировании наблюдалось странное поведение. Во-первых, мы сохраняем как varchar (36), и теперь я понимаю, что нам будет лучше использовать двоичный файл (16) - хотя насколько я лучше не уверен.
Чем больше вопрос: насколько сильно эти случайные данные завинчивают индекс, когда у нас есть записи 50M? Было бы лучше, если бы мы использовали, например, UUID типа 1, где самые левые биты были временными? Или, может быть, мы должны полностью отключить UUID и рассмотреть первичные ключи auto_increment?
Я ищу общие мысли/советы по работе с различными типами UUID, когда они хранятся в качестве индекса/первичного ключа в MySQL. Спасибо!