InnoDB is a general-purpose storage engine that
balances high reliability and high performance. As of MySQL 5.5, it
is the default MySQL storage engine. Issuing the
CREATE TABLE statement without an
ENGINE= clause creates an
Key advantages of
InnoDB tables include:
InnoDBtables arrange your data on disk to optimize queries based on primary keys.
To maintain data integrity,
FOREIGN KEYconstraints. With foreign keys, inserts, updates, and deletes are checked to ensure they do not result in inconsistencies across different tables.
You can freely mix
InnoDBtables with tables from other MySQL storage engines, even within the same statement. For example, you can use a join operation to combine data from
MEMORYtables in a single query.
InnoDBhas been designed for CPU efficiency and maximum performance when processing large data volumes.
Table 14.1 InnoDB Storage Engine Features
|Storage limits||64TB||Transactions||Yes||Locking granularity||Row|
|MVCC||Yes||Geospatial data type support||Yes||Geospatial indexing support||Yes[a]|
|B-tree indexes||Yes||T-tree indexes||No||Hash indexes||No[b]|
|Full-text search indexes||Yes[c]||Clustered indexes||Yes||Data caches||Yes|
|Index caches||Yes||Compressed data||Yes[d]||Encrypted data[e]||Yes|
|Cluster database support||No||Replication support[f]||Yes||Foreign key support||Yes|
|Backup / point-in-time recovery[g]||Yes||Query cache support||Yes||Update statistics for data dictionary||Yes|
[a] InnoDB support for geospatial indexing is available in MySQL 5.7.5 and higher.
[b] InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.
[c] InnoDB support for FULLTEXT indexes is available in MySQL 5.6.4 and higher.
[d] Compressed InnoDB tables require the InnoDB Barracuda file format.
[e] Implemented in the server (via encryption functions), rather than in the storage engine.
[f] Implemented in the server, rather than in the storage engine.
[g] Implemented in the server, rather than in the storage engine.
InnoDB storage engine maintains its own
buffer pool for caching data
and indexes in main memory. By default, with the
enabled, each new
InnoDB table and its associated
indexes are stored in a separate file. When the
innodb_file_per_table option is
InnoDB stores all its tables and
indexes in the single system
tablespace, which may consist of several files (or raw disk
InnoDB tables can handle large
quantities of data, even on operating systems where file size is
limited to 2GB.
To compare the features of
InnoDB with other
storage engines provided with MySQL, see the Storage
Engine Features table in
Chapter 15, Alternative Storage Engines.
For information about
InnoDB enhancements and new
features in MySQL 5.6, refer to:
InnoDB-related terms and definitions, see MySQL Glossary.
A forum dedicated to the
InnoDBstorage engine is available here: MySQL Forums::InnoDB.
InnoDBis published under the same GNU GPL License Version 2 (of June 1991) as MySQL. For more information on MySQL licensing, see http://www.mysql.com/company/legal/licensing/.