数据库常用存储引擎

本文详细介绍MySQL中的存储引擎,包括如何查看、修改存储引擎,以及InnoDB和MyISAM的特点对比。解析事务处理、锁粒度及如何根据应用场景选择合适的存储引擎。

1、查看引擎

show engines\G,show engine   //查看可用的存储引擎

show create table 表名\G      //查看表使用的引擎

2、修改默认存储引擎

vim /etc/my.cnf

--->[mysqld]

default-storage-engine=innodb/myisam

l 修改表使用的存储引擎,或 建表时指定表使用的存储引擎

alter  table  表   engine=存储引擎名;

create  table  表(字段列表)engine=存储引擎名;

3、常用的存储引擎

innodb

支持事务  、 事务回滚   、行级锁  、外键

存储方式: 一个表对应2个存储文件

                 表名.frm    表结构

                 表名.ibd     数据和索引

myisam

不支持事务  、 事务回滚、外键

支持表级锁

存储方式: 一个表对应3个存储文件

               表名.frm     表结构

                表名.MYD   数据

                表名.MYI     索引

 

 

4事务:对数据库服务的访问过程(连接数据库服务器    操作数据   断开连 接)

事务回滚 : 在事务执行过程中,任何一步操作失败,都会恢复之前的所有操 作。

锁粒度:

表级锁(myisam)给整张表加锁

行级锁 (innodb)    只给表中当前被操作行加锁

锁的作用:解决对表的并发访问冲突问题。

锁类型

读锁  (共享锁)

写锁  (互斥锁)

建表时如何决定表使用那种存储引擎

执行写操作多的表适合使用innodb存储引擎,可以并发访问。

执行查操作多的表适合使用myisam存储引擎,可以节省系统资源

5事务特性 (ACID)

Atomic :原子性 – 事务的整个操作是一个整体,不可分割,要么全部 成功, 要么全部失败。

Consistency : 一致性 – 事务操作的前后,表中的记录没有变化。

Isolation :隔离性 – 事务操作是相互隔离不受影响的。

Durability :持久性 – 数据一旦提交,不可改变,永久改变表数据

 

mysql> show variables like "autocommit";  // 查看提交状态

mysql> set autocommit=off;  // 关闭自动提交

mysql> rollback ;  // 数据回滚

mysql> commit;  // 提交数据

 

<think>首先,用户的问题是关于MySQL数据库的:他们想查找如何在MySQL数据库中查看存储引擎的方法。用户提供了三个引用,我需要参考这些引用来构回答。 回顾引用: - 引用[1]:提到了使用命令 `show engines\G;` 来查看MySQL支持的所有存储引擎。 - 引用[2]:讨论了如何查看特定存储引擎,指出使用 `SHOW CREATE TABLE` 可能不准确,特别是如果InnoDB未启用。 - 引用[3]:议通过终端查看存储引擎,并提到可以在 `information_schema.TABLES` 中查询多个的引擎。 用户之前的上下文是系统级指令,包括使用LaTeX格式等,但核心问题是关于MySQL查看存储引擎的方法。我需要基于这些引用提供准确的信息。 系统级指令的关键点: - 在所有行内数学达式中使用 $...$,但这个问题不涉及数学达式,所以可能不需要。 - 独立公式使用 $$...$$,但同样,这个问题可能不需要。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如 [^1]。 - 回答结构清晰,逐步解决问题。 用户的消息结尾是:“我想查找在MySQL数据库中查看存储引擎的方法 请问如何在MySQL数据库中查看存储引擎”,所以我需要直接回答这个问题。 结构化回答: 1. **介绍**:简要解释什么是存储引擎以及为什么需要查看它。 2. **方法一**:查看所有支持的存储引擎。 3. **方法二**:查看特定存储引擎。 4. **注意事项**:基于引用[2],指出某些方法的准确性限制。 5. **其他信息**:基于引用[3],提到使用 `information_schema`。 6. **生成相关问题**:在末尾添加几个相关问题。 引用标识: - 在描述方法,自然地添加引用标识,例如,提到 `show engines\G;` 添加 [^1]。 - 同样,对于其他引用提到的地方添加标识。 确保回答真实可靠:我熟悉MySQL,这些命令是标准的。确认引用内容: - `show engines;` 确实列出所有支持的引擎。 - `SHOW TABLE STATUS` 可以用来查看的引擎。 - `information_schema.TABLES` 提供了查询引擎的方式。 完整回答结构: 1. 开头:解释存储引擎的重要性。 2. 步骤1:查看所有支持的存储引擎。 3. 步骤2:查看特定存储引擎。 4. 步骤3:使用系统查询(可选)。 5. 注意事项:准确性提示。 6. 结尾:总结。 7. 相关问题:生成2-3个相关问题。 使用中文:整个回答必须是中文。 生成相关问题:例如: - 如何更改MySQL存储引擎? - MySQL中InnoDB和MyISAM引擎有什么区别? - 如何优化存储引擎性能? 引用标识放置: - 例如:"使用命令 `show engines\G;` 可以查看所有支持的存储引擎 [^1]。" - "对于特定使用 `SHOW TABLE STATUS LIKE 'table_name';` 可以查看引擎信息,但需要注意准确性 [^2]。" 最终回答: - 确保引用了所有相关引用。 - 保持清晰和逐步。 </think>### MySQL数据库中查看存储引擎的方法 在MySQL数据库中,存储引擎(Storage Engine)决定了数据的存储、索引和事务处理方式。选择合适的存储引擎(如InnoDB或MyISAM)对数据库性能至关重要。以下是基于引用内容的完整方法,我将逐步介绍如何查看存储引擎,包括所有支持的引擎列、特定的引擎,以及注意事项。所有方法主要通过MySQL命令行终端或SQL查询实现。 #### 1. **查看所有支持的存储引擎** MySQL支持多种存储引擎(如InnoDB、MyISAM、Memory等),通过以下命令可列出所有可用的引擎及其状态: ```sql SHOW ENGINES; ``` 或使用 `\G` 格式化输出(在命令行模式下更易读): ```sql SHOW ENGINES\G; ``` 执行后,输出结果包括引擎的名称(Engine)、支持状态(Support)、描述(Comment)等信息。例如,如果InnoDB已启用,"Support" 列显示为 "YES" 或 "DEFAULT"。此方法适用于快速检查数据库整体支持情况 [^1]。 #### 2. **查看特定存储引擎** 如果要查看某个数据库存储引擎,有以下两种常用方法: - **使用 `SHOW TABLE STATUS` 命令**: ```sql SHOW TABLE STATUS LIKE 'table_name'; -- 替换 'table_name' 为实际名 ``` 在输出结果中,查找 "Engine" 列的值,它显示当前使用的引擎(如 "MyISAM" 或 "InnoDB")。这是最推荐的方法,因为它直接查询状态 [^2]。 - **使用 `SHOW CREATE TABLE` 命令(谨慎使用)**: ```sql SHOW CREATE TABLE table_name; -- 替换 'table_name' 为实际名 ``` 输出中会包含引擎信息,但需要注意:**如果InnoDB引擎未启用或未正确配置,结果可能不准确**(例如,显示 "MyISAM" 但实际应为 "InnoDB")。因此,优先使用 `SHOW TABLE STATUS` 以避免错误 [^2]。 #### 3. **通过系统查询多个存储引擎** 对于批量查看多个或整个数据库存储引擎,可以使用MySQL的系统 `information_schema.TABLES`: ```sql SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'database_name'; -- 替换 'database_name' 为实际数据库名 ``` 此SQL查询返回指定数据库中所有的名称和对应的存储引擎。它适用于自动化脚本或详细分析,尤其是在需要处理多个 [^3]。 #### 注意事项 - **准确性提示**:引用[2]明确指出,某些方法(如 `SHOW CREATE TABLE`)可能因引擎配置问题而返回不准确结果。始终优先使用 `SHOW TABLE STATUS` 或 `information_schema.TABLES`。 - **引擎状态检查**:如果引擎未启用(如InnoDB),`SHOW ENGINES` 会显示 "DISABLED" 或 "NO"。确保在MySQL配置文件(如 `my.cnf`)中启所需引擎。 - **权限要求**:执行这些命令需MySQL用户具有适当权限(如 `SELECT` 权限)。 - **实际应用**:例如,在优化查询,查看引擎可帮助决定是否切换到更高效的引擎(如从MyISAM迁移到InnoDB以支持事务)。 通过这些方法,您可以快速可靠地获取存储引擎信息。如果您使用MySQL图形工具(如phpMyAdmin),界面中通常也提供类似选项。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值