當您建立新的表格時,您可以透過在 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 8.4 中,預設引擎是 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 節,「將識別碼對應至檔案名稱」 中所述。