If you use MyISAM tables but are not
committed to them for technical reasons, you may find
InnoDB tables beneficial for the following
reasons:
If your server crashes because of a hardware or software
issue, regardless of what was happening in the database at the
time, you don't need to do anything special after restarting
the database. InnoDB
crash recovery
automatically finalizes any changes that were committed before
the time of the crash, and undoes any changes that were in
process but not committed. Just restart and continue where you
left off. This process is now much faster than in MySQL 5.1
and earlier.
The InnoDB storage engine maintains its own
buffer pool that
caches table and index data in main memory as data is
accessed. Frequently used data is processed directly from
memory. This cache applies to many types of information and
speeds up processing. On dedicated database servers, up to 80%
of physical memory is often assigned to the
InnoDB buffer pool.
If you split up related data into different tables, you can set up foreign keys that enforce referential integrity. Update or delete data, and the related data in other tables is updated or deleted automatically. Try to insert data into a secondary table without corresponding data in the primary table, and the bad data gets kicked out automatically.
If data becomes corrupted on disk or in memory, a checksum mechanism alerts you to the bogus data before you use it.
When you design your database with appropriate
primary key columns
for each table, operations involving those columns are
automatically optimized. It is very fast to reference the
primary key columns in WHERE clauses,
ORDER BY clauses, GROUP
BY clauses, and
join operations.
Inserts, updates, deletes are optimized by an automatic
mechanism called change
buffering. InnoDB not only allows
concurrent read and write access to the same table, it caches
changed data to streamline disk I/O.
Performance benefits are not limited to giant tables with long-running queries. When the same rows are accessed over and over from a table, a feature called the Adaptive Hash Index takes over to make these lookups even faster, as if they came out of a hash table.
You can freely mix InnoDB tables with
tables from other MySQL storage engines, even within the same
statement. For example, you can use a
join operation to combine
data from InnoDB and
MEMORY tables in a single query.
InnoDB has been designed for CPU efficiency
and maximum performance when processing large data volumes.
InnoDB tables can handle large quantities
of data, even on operating systems where file size is limited
to 2GB.
For InnoDB-specific tuning techniques you can
apply in your application code, see
Section 8.5, “Optimizing for InnoDB Tables”.