MySQL存储引擎

存储引擎

  MySQL数据库在实际的工作中分为了语句分析层和存储引擎层,其中语句分析层主要负责与客户端完成连接并且事先分析出SQL语句的内容和功能,存储引擎层则主要负责接收来自语句分析层的分析结果,完成相应的数据输入输出和文件操作,即如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

MySQL存储引擎

(1)MyISAM存储引擎
  不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有要求或者以SELECT为主的应用基本上可以用这个引擎来创建表。支持3种不同的存储格式,分别是:静态表、动态表、压缩表

(2)InnoDB存储引擎
  该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储引擎的特点:支持自动增长列,支持外键约束

MyISAM和InnoDB的主要区别和应用场景
主要区别:
1)MyISAM是非事务安全型的,而InnoDB是事务安全型的
2)MyISAM锁的粒度是表级,而InnoDB支持行级锁定
3)MyISAM不支持外键,而InnoDB支持
4)MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦
5)InnoDB底层是聚簇索引,MyISAM是非聚簇索引 聚簇索引和非聚簇索引

应用场景:
1)MyISAM管理非事务表,提供高速存储和检索。如果应用中需要执行大量的SELECT查询,那么适合用MyISAM
2)InnoDB用于事务处理应用程序,支持ACID事务。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能

为什么MyISAM适合查询多的场景
MyISAM会比Innodb 的查询速度快,INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
1)数据块。INNODB要缓存,MYISAM只缓存索引块,这中间还有换进换出的减少
2)INNODB寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致,虽然场景没有,但它还是需要去检查和维护。InnoDB:通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。但是InnoDB并不存储这些事件发生时的实际时间,相反它只存储这些事件发生时的系统版本号。这是一个随着事务的创建而不断增长的数字。每个事务在事务开始时会记录它自己的系统版本号。每个查询必须去检查每行数据的版本号与事务的版本号是否相同。

(3)MEMORY存储引擎
  Memory存储引擎使用存在于内存中的内容来创建表。每个memory表只实际对应一个磁盘文件,格式是.frm。memory类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失掉。
  MEMORY存储引擎的表可以选择使用BTREE索引或HASH索引,两种不同类型的索引有其不同的使用范围:
  Hash索引优点:Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。Hash索引缺点: 因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持
  Memory类型的存储引擎主要用于那些内容变化不频繁的代码表或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果。对存储引擎为memory的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑

(4)MERGE存储引擎
  Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值