如何查询mysql的引擎

发布时间:2021-12-09 09:37:32 作者:iii
来源:亿速云 阅读:213
# 如何查询MySQL的引擎

## 前言

MySQL作为最流行的关系型数据库之一,支持多种存储引擎(Storage Engine),不同的引擎具有不同的特性,适用于不同的应用场景。了解如何查询MySQL的引擎信息对于数据库优化、故障排查和功能选择至关重要。本文将详细介绍多种查询MySQL引擎的方法,并解释相关概念。

---

## 一、MySQL存储引擎简介

存储引擎是MySQL的核心组件,负责数据的存储、检索和管理。常见的MySQL引擎包括:

- **InnoDB**:默认引擎,支持事务、行级锁和外键
- **MyISAM**:不支持事务,但查询速度快
- **MEMORY**:数据存储在内存中,速度快但易丢失
- **ARCHIVE**:适用于存储大量归档数据
- **CSV**:以CSV格式存储数据

---

## 二、查询MySQL支持的引擎列表

### 方法1:使用SHOW ENGINES命令

```sql
SHOW ENGINES;

执行结果示例:

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

方法2:查询information_schema数据库

SELECT * FROM information_schema.ENGINES;

三、查询特定表的引擎信息

方法1:SHOW TABLE STATUS命令

SHOW TABLE STATUS LIKE '表名';

示例输出中的Engine字段显示表的存储引擎。

方法2:查询information_schema.TABLES

SELECT TABLE_NAME, ENGINE 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = '数据库名';

方法3:使用CREATE TABLE语句查看(适用于MyISAM)

SHOW CREATE TABLE 表名;

在返回的建表语句中会包含ENGINE=引擎类型的信息。


四、查询默认存储引擎

方法1:查看全局变量

SHOW VARIABLES LIKE 'default_storage_engine';

方法2:查看配置文件

MySQL配置文件(通常是my.cnf或my.ini)中可能包含:

[mysqld]
default-storage-engine=INNODB

五、临时修改会话的存储引擎

SET default_storage_engine=MyISAM;

注意:这只会影响当前会话中新创建的表。


六、永久修改默认存储引擎

  1. 编辑MySQL配置文件(my.cnf/my.ini)
  2. 在[mysqld]部分添加:
    
    default-storage-engine=InnoDB
    
  3. 重启MySQL服务

七、转换表的存储引擎

方法1:ALTER TABLE语句

ALTER TABLE 表名 ENGINE = InnoDB;

方法2:使用mysqldump导出后修改

  1. 导出表结构和数据
  2. 修改CREATE TABLE语句中的引擎类型
  3. 重新导入数据

八、引擎选择的注意事项

  1. InnoDB:需要事务支持、高并发写入时使用
  2. MyISAM:读多写少、不需要事务的场景
  3. MEMORY:临时数据、高速缓存
  4. ARCHIVE:日志类只写不读的数据

九、常见问题解答

Q1:为什么SHOW ENGINES显示某些引擎为NO?

A:可能是MySQL未编译该引擎支持,或启动时禁用了该引擎。

Q2:如何知道哪些表使用了MyISAM引擎?

SELECT TABLE_NAME 
FROM information_schema.TABLES 
WHERE ENGINE = 'MyISAM' AND TABLE_SCHEMA = '数据库名';

Q3:修改引擎会影响现有数据吗?

A:会触发表重建,大表操作可能耗时较长,建议在低峰期进行。


十、总结

掌握MySQL引擎查询方法可以帮助您: 1. 了解数据库配置现状 2. 优化数据库性能 3. 解决兼容性问题 4. 做出合理的架构决策

建议定期检查数据库中各表的引擎使用情况,确保它们符合应用的需求特点。

提示:MySQL 8.0+版本已完全移除了对MyISAM作为系统表的支持,所有系统表都使用InnoDB引擎。 “`

(全文约1000字)

推荐阅读:
  1. Mysql查询 主从复制及引擎管理
  2. Presto查询引擎简单分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:javascript变量声明是否必须用var

下一篇:Scala的函数式风格是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》