MySQL中的引擎

什么是存储引擎

MySQL中的数据用各种不同的技术存储在文件中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平、并且最终提供广泛的不同功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎

在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。
而MySQL数据库提供了多种存储引擎。用户可以预先设置或者在MySQL服务器中启用。也可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息,如何检索这些信息以及所需要的数据结合什么样的性能和功能的时候提供了最大的灵活性。

存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储时以表的形式存储的,所以孙处引擎也可以称为表类型(即存储和操作此表的类型)

执行引擎相关的操作

  1. 查看数据库支持的引擎
SHOW ENGINES;

在这里插入图片描述

  1. 查看某个表的执行引擎
    在MySQL中每张表都可以使用不同的引擎。
SHOW TABLE STATUS LIKE '表名';

举例:

SHOW TABLE STATUS LIKE 'student'

在这里插入图片描述

  1. 修改执行引擎

方式 1:将 mysql.ini 中 default-storage-engine=InnoDB,重启服务。
方式 2:建表时指定 CREATE TABLE 表名(…)ENGINE=MYISAM。
方式 3:建表后修改 ALTER TABLE 表名 ENGINE = INNODB。

存储引擎的分类

存储引擎主要有:MyISAM 、InnoDB、MEMORY、BLACKHOLE、CSV、PERFORMANCE_SCHEMA、ARCHIVE、FEDERATED、MRG_MYISAM。

功能MyISAMInnoDBMEMORYARCHIVE
存储限制256TB64TBRAMNone
支持事务NOYESNONO
支持全文搜索YESYESNONO
支持数搜索YESYESYESNO
支持哈希搜索NONOYESNO
支持数据缓存NOYESN/ANO
支持外键NOYESNONO

在这我们主要分析InnoDB和MyIsam这两款存储引擎。

InnoDB

InnoDB是MySQL默认的存储引擎。

它是一个事务型的存储引擎,有行级锁和外键约束,支持全文检索(全文索引),它的设计目标就是为了处理大容量数据库系统。

InnoDB的表存储只生成一个文件,
在这里插入图片描述

MySQL运行时InnoDB会在内存中建立缓冲池,用于缓冲数据和索引;支持主键自增和外键;不存储表的总行数。

InnoDB给MySQL的表提供了事务处理、回滚、奔溃修复能力和多版本并发控制的事务安全,它也是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务的处理能力,也是其他存储引擎不能比拟的。

优点:
就在于它提供了良好的事务处理,奔溃修复和并发控制。

缺点:
读写效率差,占用的数据空间相对比较大。

MyISAM

它也是MySQL常见的存储引擎,曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。

MyISAM的表存储有3个文件。
在这里插入图片描述

文件的名字与表名都一样。扩展名分别是MYD、MYI、sdi。
在MYD中存储文件的数据。
在MYI中存储文件的索引。
在sdi中存储表的结构。

基于MyISAM存储引擎的表支持3中不同的粗出格式。包括静态型,动态型和压缩型。其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包括变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。

MyISAM的优势就在于占用空间小,查询处理速度快。缺点就是不支持事务的完整性和并发性,INSERT(插入)或UPDATE(更新)数据时需要锁定整个表,效率更低眼底下。


二者对比:

对比项MyISAMInnoDB
主外键不支持支持
事务不支持支持
行表锁表锁,即使操作一条记录也会锁住整个表,不支持高并发的操作行锁,操作时只锁某一行,不对其它行有影响。适合高并发操作
缓存值缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性影响
表空间
关注点性能事务

上一篇:===》 MySQL的架构体系

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值