It's very easy to have an auto_increment column in a table and
maintain primary keys. Many people think so, and also they think
that MySQL will do the best job for them. With InnoDB, the case
is a little different as supposed to be. Basic assumption is that
since InnoDB works with row-level locking, combining it with
auto_increment should ward off worries. But it is just the
beginning.
Let me clarify how auto_increment works. InnoDB maintains the
auto_increment value in memory. Good approach. When an insert
statement requests the auto_increment value, InnoDB takes the
stored value, increment it by one and return. The value in memory
is not incremented at this time. This is not bad, because who
knows how many rows the insert statement has.
But, this means that InnoDB cannot provide auto_increment values
to other threads until this finishes, hence we cannot have
concurrent inserts even in InnoDB when using an auto_increment
value. …
[Read more]