14.24 InnoDB Restrictions and Limitations

This section describes restrictions and limitations of the 'InnoDB' storage engine.

 File: manual.info.tmp, Node: storage-engines, Next: replication, Prev: innodb-storage-engine, Up: Top

15 Alternative Storage Engines ******************************

Storage engines are MySQL components that handle the SQL operations for different table types. note 'InnoDB': innodb-storage-engine. is the default and most general-purpose storage engine, and Oracle recommends using it for tables except for specialized use cases. (The note 'CREATE TABLE': create-table. statement in MySQL 5.7 creates 'InnoDB' tables by default.)

MySQL Server uses a pluggable storage engine architecture that enables storage engines to be loaded into and unloaded from a running MySQL server.

To determine which storage engines your server supports, use the *note 'SHOW ENGINES': show-engines. statement. The value in the 'Support' column indicates whether an engine can be used. A value of 'YES', 'NO', or 'DEFAULT' indicates that an engine is available, not available, or available and currently set as the default storage engine.

 mysql> SHOW ENGINES\G
 *************************** 1. row ***************************
       Engine: PERFORMANCE_SCHEMA
      Support: YES
      Comment: Performance Schema
 Transactions: NO
           XA: NO
   Savepoints: NO
 *************************** 2. row ***************************
       Engine: InnoDB
      Support: DEFAULT
      Comment: Supports transactions, row-level locking, and foreign keys
 Transactions: YES
           XA: YES
   Savepoints: YES
 *************************** 3. row ***************************
       Engine: MRG_MYISAM
      Support: YES
      Comment: Collection of identical MyISAM tables
 Transactions: NO
           XA: NO
   Savepoints: NO
 *************************** 4. row ***************************
       Engine: BLACKHOLE
      Support: YES
      Comment: /dev/null storage engine (anything you write to it disappears)
 Transactions: NO
           XA: NO
   Savepoints: NO
 *************************** 5. row ***************************
       Engine: MyISAM
      Support: YES
      Comment: MyISAM storage engine
 Transactions: NO
           XA: NO
   Savepoints: NO
 ...

This chapter covers use cases for special-purpose MySQL storage engines. It does not cover the default note 'InnoDB': innodb-storage-engine. storage engine or the note 'NDB': mysql-cluster. storage engine which are covered in note innodb-storage-engine::, and note mysql-cluster::. For advanced users, this chapter also contains a description of the pluggable storage engine architecture (see *note pluggable-storage-overview::).

For information about features offered in commercial MySQL Server binaries, see 'MySQL Editions' (https://www.mysql.com/products/), on the MySQL website. The storage engines available might depend on which edition of MySQL you are using.

For answers to commonly asked questions about MySQL storage engines, see *note faqs-storage-engines::.

MySQL 5.7 Supported Storage Engines

You are not restricted to using the same storage engine for an entire server or schema. You can specify the storage engine for any table. For example, an application might use mostly 'InnoDB' tables, with one 'CSV' table for exporting data to a spreadsheet and a few 'MEMORY' tables for temporary workspaces.

Choosing a Storage Engine

The various storage engines provided with MySQL are designed with different use cases in mind. The following table provides an overview of some storage engines provided with MySQL, with clarifying notes following the table.

Storage Engines Feature Summary

Feature MyISAM Memory InnoDB Archive NDB

B-tree indexes

Yes Yes Yes No No

Backup/point-in-time recovery (note 1)

Yes Yes Yes Yes Yes

Cluster database support

No No No No Yes

Clustered indexes

No No Yes No No

Compressed data

Yes No Yes Yes No (note
2)

Data caches

No N/A Yes No Yes

Encrypted data

Yes Yes (note Yes (note Yes (note Yes (note (note 3) 4) 3) 5) 3)

Foreign key support

No No Yes No Yes

Full-text search indexes

Yes No Yes (note No No 6)

Geospatial data type support

Yes No Yes Yes Yes

Geospatial indexing support

Yes No Yes (note No No 7)

Hash indexes

No Yes No (note No Yes 8)

Index caches

Yes N/A Yes No Yes

Locking granularity

Table Table Row Row Row

MVCC

No No Yes No No

Replication support (note 1)

Yes Limited Yes Yes Yes (note 9)

Storage limits

256TB RAM 64TB None 384EB

T-tree indexes

No No No No Yes

Transactions

No No Yes No Yes

Update statistics for data dictionary

Yes Yes Yes Yes Yes

Notes: 1. Implemented in the server, rather than in the storage engine. 2. Compressed MyISAM tables are supported only when using the compressed row format. Tables using the compressed row format with MyISAM are read only. 3. Implemented in the server via encryption functions. 4. Implemented in the server via encryption functions; In MySQL 5.7 and later, data-at-rest encryption is supported. 5. Implemented in the server via encryption functions; encrypted NDB backups as of NDB 8.0.22; transparent NDB file system encryption supported in NDB 8.0.29 and later. 6. Support for FULLTEXT indexes is available in MySQL 5.6 and later. 7. Support for geospatial indexing is available in MySQL 5.7 and later. 8. InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature. 9. See the discussion later in this section.

 File: manual.info.tmp, Node: storage-engine-setting, Next: myisam-storage-engine, Prev: storage-engines, Up: storage-engines