MySQL中常用的存储引擎

本文深入解析MySQL中的存储引擎,重点对比了InnoDB和MyISAM的特点及适用场景。InnoDB支持事务安全,行级锁定和外键,适用于需要高性能和数据一致性的应用场景;而MyISAM则在读取密集型和插入密集型操作中表现出色,但不支持事务和行级锁。文章还介绍了如何根据业务需求选择合适的存储引擎。
什么是存储引擎

关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,也就是需要不同存储引擎。

MySQL都有哪些存储引擎

在这里插入图片描述
可以看到,MySQL中一共有这么多存储引擎,但是实际开发中我们常用的只有InnoDBMyISAM,如果想要看MySQL默认使用的引擎可以使用这个命令SHOW VARIABLES LIKE 'storage_engine';,MySQL5.5以后默认使用InnoDB存储引擎。

InnoDB存储引擎

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,而且InnoDB是默认的MySQL引擎。

  1. InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合。
  2. InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的。
  3. InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。
  4. InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。
  5. InnoDB被用在众多需要高性能的大型数据库站点上。
MyISAM存储引擎
  • MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物
  • 不支持行锁(MyISAM只有表锁),读取时对需要读到的所有表加锁,写入时则对表加排他锁
  • 不支持外键
  • 不支持崩溃后的安全恢复
  • 一般应用在如下情况:
    • 选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
    • 插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
InnoDB和MyISAM对比
特点InnoDBMyISAM
存储限制64TB256TB
事物支持
锁机制行锁表锁
全文索引支持
数据缓存支持
空间使用
内存使用
支持外键支持
关注点事物性能
如何选择合适的引擎

其实这个很灵活,既然MySQL默认的引擎是InnoDB,也就说InnoDB能做你绝大多数想做的东西。其实选择合适的引擎只用考虑如下几点就好:

  • 事物
  • 数据恢复
  • 热备份
参考资料

《高性能MySQL》

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值