content_image/823686.jpg
-- Simple table definitions can be switched from one to another. CREATE TABLE t2 (i INT) ENGINE = CSV; CREATE TABLE t3 (i INT) ENGINE = MEMORY; 

When you omit the ENGINE  option, the default storage engine is used. The default engine is InnoDB in MySQL 8.0. You can specify the default engine by using the --default-storage-engine  server startup option, or by setting the default-storage-engine  option in the my.cnf  configuration file. 

You can set the default storage engine for the current session by setting the default_storage_engine variable: 

SET default_storage_engine=NDBCLUSTER; 

The storage engine for TEMPORARY  tables created with CREATE TEMPORARY TABLE  can be set separately from the engine for permanent tables by setting the default_tmp_storage_engine , either at startup or at runtime. 

To convert a table from one storage engine to another, use an ALTER TABLE  statement that indicates the new engine: 

ALTER TABLE t ENGINE = InnoDB; 

See Section 13.1.20, “CREATE TABLE Statement” , and Section 13.1.9, “ALTER TABLE Statement” . 

If you try to use a storage engine that is not compiled in or that is compiled in but deactivated, MySQL instead creates a table using the default storage engine. For example, in a replication setup, perhaps your source server uses InnoDB  tables for maximum safety, but the replica servers use other storage engines for speed at the expense of durability or concurrency. 

By default, a warning is generated whenever CREATE TABLE  or ALTER TABLE  cannot use the default storage engine. To prevent confusing, unintended behavior if the desired engine is unavailable, enable the NO_ENGINE_SUBSTITUTION  SQL mode. If the desired engine is unavailable, this setting produces an error instead of a warning, and the table is not created or altered. See Section 5.1.11, “Server SQL Modes” . 

MySQL may store a table’s index and data in one or more other files, depending on the storage engine. Table and column definitions are stored in the MySQL data dictionary. Individual storage engines create any additional files required for the tables that they manage. If a table name contains special characters, the names for the table files contain encoded versions of those characters as described in Section 9.2.4, “Mapping of Identifiers to File Names” . 

## 16.2 The MyISAM Storage Engine 

MyISAM  is based on the older (and no longer available) ISAM  storage engine but has many useful extensions. 

<img src='content_image/823686.jpg'>

