InnoDB е транзакционна машина.
Това означава, че в следния сценарий:
Session Aвмъква запис1Session Bвмъква запис2Session Aвръща се назад
, има или възможност за пропуск или session B ще се заключи до session A ангажирани или отменени.
InnoDB дизайнерите (както повечето други дизайнери на транзакционни двигатели) избраха да допуснат пропуски.
От документацията :
При достъп до брояча за автоматично увеличение,
InnoDBизползва специаленAUTO-INCна ниво таблица заключване, което запазва до края на текущияSQLизявление, а не до края на транзакцията. Специалната стратегия за освобождаване на заключване беше въведена за подобряване на едновременността за вмъквания в таблица, съдържащаAUTO_INCREMENTколона…
InnoDBизползва брояча за автоматично увеличение в паметта, докато сървърът работи. Когато сървърът е спрян и рестартиран,InnoDBповторно инициализира брояча за всяка таблица за първияINSERTкъм таблицата, както е описано по-рано.
Ако се страхувате от id колоната се обвива, направете я BIGINT (дълъг 8 байта).