## 15.1 Introduction to InnoDB

[15.1.1 Benefits of Using InnoDB Tables](innodb-benefits.html)
[15.1.2 Best Practices for InnoDB Tables](innodb-best-practices.html)
[15.1.3 Verifying that InnoDB is the Default Storage Engine](innodb-check-availability.html)
[15.1.4 Testing and Benchmarking with InnoDB](innodb-benchmarking.html)

[]()[]()[]()[]()[]()[]()[]()[]()[]()

`InnoDB` is a general-purpose storage engine that balances high reliability and high performance. In MySQL 8.0, `InnoDB` is the default MySQL storage engine. Unless you have configured a different default storage engine, issuing a [`CREATE TABLE`](create-table.html) statement without an `ENGINE` clause creates an `InnoDB` table.

### Key Advantages of InnoDB

* Its DML operations follow the ACID model, with transactions featuring commit, rollback, and crash-recovery capabilities to protect user data. See [Section 15.2, “InnoDB and the ACID Model”](mysql-acid.html).

* Row-level locking and Oracle-style consistent reads increase multi-user concurrency and performance. See [Section 15.7, “InnoDB Locking and Transaction Model”](innodb-locking-transaction-model.html).

* `InnoDB` tables arrange your data on disk to optimize queries based on primary keys. Each `InnoDB` table has a primary key index called the clustered index that organizes the data to minimize I/O for primary key lookups. See [Section 15.6.2.1, “Clustered and Secondary Indexes”](innodb-index-types.html).

* To maintain data integrity, `InnoDB` supports `FOREIGN KEY` constraints. With foreign keys, inserts, updates, and deletes are checked to ensure they do not result in inconsistencies across related tables. See [Section 13.1.20.5, “FOREIGN KEY Constraints”](create-table-foreign-keys.html).

[]()

**Table 15.1 InnoDB Storage Engine Features**

|                                             Feature                                             |                                                        Support                                                        |
|-------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
|                                       **B-tree indexes**                                        |                                                          Yes                                                          |
|**Backup/point-in-time recovery** (Implemented in the server, rather than in the storage engine.)|                                                          Yes                                                          |
|                                  **Cluster database support**                                   |                                                          No                                                           |
|                                      **Clustered indexes**                                      |                                                          Yes                                                          |
|                                       **Compressed data**                                       |                                                          Yes                                                          |
|                                         **Data caches**                                         |                                                          Yes                                                          |
|                                       **Encrypted data**                                        |Yes (Implemented in the server via encryption functions; In MySQL 5.7 and later, data-at-rest encryption is supported.)|
|                                     **Foreign key support**                                     |                                                          Yes                                                          |
|                                  **Full-text search indexes**                                   |                        Yes (Support for FULLTEXT indexes is available in MySQL 5.6 and later.)                        |
|                                **Geospatial data type support**                                 |                                                          Yes                                                          |
|                                 **Geospatial indexing support**                                 |                      Yes (Support for geospatial indexing is available in MySQL 5.7 and later.)                       |
|                                        **Hash indexes**                                         |                   No (InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.)                   |
|                                        **Index caches**                                         |                                                          Yes                                                          |
|                                     **Locking granularity**                                     |                                                          Row                                                          |
|                                            **MVCC**                                             |                                                          Yes                                                          |
|     **Replication support** (Implemented in the server, rather than in the storage engine.)     |                                                          Yes                                                          |
|                                       **Storage limits**                                        |                                                         64TB                                                          |
|                                       **T-tree indexes**                                        |                                                          No                                                           |
|                                        **Transactions**                                         |                                                          Yes                                                          |
|                            **Update statistics for data dictionary**                            |                                                          Yes                                                          |

 To compare the features of `InnoDB` with other storage engines provided with MySQL, see the *Storage Engine Features* table in [Chapter 16, *Alternative Storage Engines*](storage-engines.html).

### InnoDB Enhancements and New Features

 For information about `InnoDB` enhancements and new features, refer to:

* The `InnoDB` enhancements list in [Section 1.3, “What Is New in MySQL 8.0”](mysql-nutshell.html).

* The [Release Notes](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/).

### Additional InnoDB Information and Resources

* For `InnoDB`-related terms and definitions, see the [MySQL Glossary](glossary.html).

* For a forum dedicated to the `InnoDB` storage engine, see [MySQL Forums::InnoDB](http://forums.mysql.com/list.php?22).

* `InnoDB` is 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/](http://www.mysql.com/company/legal/licensing/).

