How To Change MySQL Storage Engine

摘要:在本教程中,您将了解如何表正在使用哪种存储引擎以及如何将表的存储引擎更改为不同的存储引擎。

MySQL支持多种存储引擎,这些引擎提供不同的功能和特性。例如,InnoDB表支持事务,而MyISAM则不支持。

查询表当前存储引擎

有多种方法可以获取表的当前存储引擎。

检查表当前存储引擎的第一种方法是从information_schema数据库中的tables表中查询数据

例如,要获取 classicmodels示例数据库offices表的当前存储引擎,请使用以下查询:

SELECT 
    engine
FROM
    information_schema.tables
WHERE
    table_schema = 'classicmodels'
        AND table_name = 'offices';Code language: SQL (Structured Query Language) (sql)
MySQL更改存储引擎示例

查询表的存储引擎的第二种方法是使用SHOW TABLE STATUS语句,如下所示:

SHOW TABLE STATUS LIKE 'offices';Code language: SQL (Structured Query Language) (sql)
MySQL 显示表状态示例

获取表的存储引擎的第三种方法是使用SHOW CREATE TABLE语句。

SHOW CREATE TABLE offices;Code language: SQL (Structured Query Language) (sql)
mysql> SHOW CREATE TABLE offices\G;
*************************** 1. row ***************************
       Table: offices
Create Table: CREATE TABLE `offices` (
  `officeCode` varchar(10) NOT NULL,
  `city` varchar(50) NOT NULL,
  `phone` varchar(50) NOT NULL,
  `addressLine1` varchar(50) NOT NULL,
  `addressLine2` varchar(50) DEFAULT NULL,
  `state` varchar(50) DEFAULT NULL,
  `country` varchar(50) NOT NULL,
  `postalCode` varchar(15) NOT NULL,
  `territory` varchar(10) NOT NULL,
  PRIMARY KEY (`officeCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql>Code language: SQL (Structured Query Language) (sql)

MySQL显示offices表使用InnoDB存储引擎。

MySQL改变存储引擎

一旦获得表的存储引擎信息,就可以使用ALTER TABLE语句更改它,如下所示:

ALTER TABLE table_name ENGINE engine_name;Code language: SQL (Structured Query Language) (sql)

要检查您的 MySQL 服务器当前支持哪种存储引擎,请使用 SHOW ENGINES 语句,如下所示:

SHOW ENGINES;Code language: SQL (Structured Query Language) (sql)
MySQL 显示引擎

例如,要将offices表的存储引擎从InnoDB更改为MyISAM,可以使用以下语句:

ALTER TABLE offices ENGINE = 'MYISAM';Code language: SQL (Structured Query Language) (sql)

在本教程中,我们向您展示了如何查询表的当前存储引擎以及如何使用ALTER TABLE语句将其更改为不同的存储引擎。

本教程有帮助吗?