É um exemplo de bloqueio de incremento automático no InnoDB:Como você está executando 2 instruções simultaneamente na mesma sessão:o bloqueio de inc automático é obtido pela primeira consulta e a geração de valor de incremento automático não é intercalada entre as instruções - esse é o ponto inteiro de transação.
Isso sempre acontecerá por design:Se não, a maneira como as transações no InnoDB funcionam, bem, não funcionaria. A escalabilidade sob cargas do tipo OLTP seria horrível, pois cada inserção teria que esperar que todas as outras inserções terminassem, fossem confirmadas ou pior - revertidas.
Ou seja:Se sua primeira inserção for 5x mais longa que a segunda, e falhar e for revertida, a segunda ainda será concluída e confirmada. Caso contrário, você teria que esperar por ea. consulta seja completada após a outra.
Se você precisar de IDs sequenciais e absolutamente exclusivos, extraia-os de outra fonte. As colunas AutoInc simplesmente garantem um valor único - não necessariamente uma monossequência - que é um ponto de serialização e um gargalo.
Uma maneira de contornar isso, se necessário:
defina
innodb_autoinc_lock_mode = 0
no seu my.cnf/mysql.ini Descrição de bloqueio automático no InnoDB e Opções