Нет, пробелы есть , потому что быстрее и проще работать с параллельной системой, вычисляя таким образом уникальный идентификатор.
Независимо от того, равно ли значение вашего auto_increment 1
или755131
не имеет значения для повышения производительности.
Требования к хранилищу определяются вашей таблицей, наиболее часто используемый идентификатор хранилища для автоинкремента составляет 4 байта int
.Независимо от того, какое число вы храните, оно занимает 4 байта (если, конечно, оно может уместиться в 4 байта).
Существует причина, по которой возникают пропуски и почему они не являются проблемой.Primary key
- это уникальный идентификатор.Самый простой способ вычислить уникальный идентификатор - это увеличивать число каждый раз, когда вы изменяете таблицу (вставка, удаление).
Этот номер не обязательно должен быть последовательным , но уникальным.MySQL использует последовательный алгоритм для вычисления уникального числа.
Поскольку MySQL работает с учетом параллелизма, каждая транзакция изолирована (если используется механизм транзакций).Если транзакция претерпевает изменения в auto_increment, но не может быть записана - auto_increment тратится вечно.Для каждой таблицы есть один счетчик, нет кода, который проверяет, должно ли число уменьшаться или нет (это пустая трата ресурсов) - оно только увеличивается, независимо от того, успешен запрос или нет.
Этоподход гарантирует:
производительность - не нужно беспокоиться о том, каким должно быть состояние счетчика (должно ли оно уменьшаться или нет)
уникальность - это самый быстрый и безопасный способ вычисления уникального идентификатора для строки - просто увеличьте число на auto_increment_offset
.Не нужно беспокоиться о столкновениях, а что нет.Вы на 100% уверены, что если вы увеличите последнее число на auto_increment_offset
- вы получите новый, уникальный и неиспользуемый номер в вашей базе данных /
С базами данных, особенно с MySQL- Существуют различные факторы, когда речь идет о производительности записи или чтения.Мин-макс и попытка возиться с auto_increment
- не из тех.Все будет хорошо, если вы оставите все как есть.
Если вы думаете, что превысите максимум 4-байтового целого числа без знака (около 4,2 миллиарда), вы можете рассмотреть вопрос об изменении вашего первичного ключа на bigint
.Вы не превысите это в течение нескольких тысяч лет, если будете вставлять тысячи записей в секунду.