mysql4 отсутствует идентификаторы auto_increment - PullRequest
1 голос
/ 17 августа 2011

У нас есть система, которая получает тысячи запросов в секунду и добавляет несколько тысяч заметок в день. Таблица заметок содержит более 2,5 миллионов записей. Мы никогда не удаляем заметку, и я только что обнаружил, что на сегодня в этом поле 19 пропущенных идентификаторов в поле увеличения идентификатора этой таблицы.

Есть мысли?

Мы используем mysql4 и работаем над переходом к 5. Мы также работаем на Windows 2003

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Это могут быть INSERT-запросы, которые не выполнялись по разным причинам или откатывались в транзакциях.

0 голосов
/ 18 августа 2011

Вы не можете гарантировать, что идентификаторы являются последовательными. Обычно происходит то, что транзакция откатывается. Это может произойти по многим причинам - например, тупик. Идентификаторы распределяются до того, как строки вставляются, поэтому, если вставка создает взаимоблокировку, а поток проигрывает, транзакция откатывается, вставка завершается неудачно, а идентификатор «теряется».

Это не ненормальная ситуация; каждое приложение должно быть способно выдерживать (некоторые) тупики. Это часть использования движка, такого как InnoDB (и в равной степени это происходит в MSSQL, Oracle и т. Д.).

...