當您建立新的表格時,可以透過在 CREATE TABLE
陳述式中加入 ENGINE
表格選項來指定要使用的儲存引擎。
-- ENGINE=INNODB not needed unless you have set a different
-- default storage engine.
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
CREATE TABLE t2 (i INT) ENGINE = CSV;
CREATE TABLE t3 (i INT) ENGINE = MEMORY;
當您省略 ENGINE
選項時,會使用預設的儲存引擎。在 MySQL 9.0 中,預設的引擎是 InnoDB
。您可以使用 --default-storage-engine
伺服器啟動選項,或在 my.cnf
組態檔案中設定 default-storage-engine
選項,來指定預設引擎。
您可以透過設定 default_storage_engine
變數來設定目前會期的預設儲存引擎。
SET default_storage_engine=NDBCLUSTER;
使用 CREATE TEMPORARY TABLE
建立的 TEMPORARY
表格的儲存引擎,可以透過在啟動時或執行時設定 default_tmp_storage_engine
,與永久表格的引擎分開設定。
若要將表格從一個儲存引擎轉換為另一個儲存引擎,請使用指出新引擎的 ALTER TABLE
陳述式。
ALTER TABLE t ENGINE = InnoDB;
請參閱 第 15.1.20 節,「CREATE TABLE 陳述式」,以及 第 15.1.9 節,「ALTER TABLE 陳述式」。
如果您嘗試使用未編譯或已編譯但已停用的儲存引擎,MySQL 會改為使用預設的儲存引擎建立表格。例如,在複製設定中,您的來源伺服器可能會為了獲得最大安全性而使用 InnoDB
表格,但複本伺服器可能會為了速度而犧牲耐用性或並行性來使用其他儲存引擎。
依預設,每當 CREATE TABLE
或 ALTER TABLE
無法使用預設儲存引擎時,都會產生警告。若要避免在所需的引擎無法使用時發生混淆、非預期的行為,請啟用 NO_ENGINE_SUBSTITUTION
SQL 模式。如果所需的引擎無法使用,此設定會產生錯誤而不是警告,而且表格不會被建立或變更。請參閱 第 7.1.11 節,「伺服器 SQL 模式」。
根據儲存引擎,MySQL 可能會將表格的索引和資料儲存在一或多個其他檔案中。表格和資料行定義會儲存在 MySQL 資料字典中。個別儲存引擎會建立其管理的表格所需的任何額外檔案。如果表格名稱包含特殊字元,表格檔案的名稱會包含這些字元的編碼版本,如 第 11.2.4 節,「將識別符號對應到檔案名稱」中所述。