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