mysql 引擎 类型_MySQL(一)之存储引擎类型

ab86e83b013ecdaf80617e9708ff7642.png

InnoDB:

经常更新的表,适合处理多重并发的更新请求。

支持事务。

可以从灾难中恢复(通过bin-log日志等)。

外键约束。只有他支持外键。

支持自动增加列属性auto_increment。

索引结构为B+Tree

每个表有两个文件 .frm(表结构),ibd(数据索引文件)

InnoDB索引实现(聚集)

表数据文件本身就是 按B+Tree组织的一个索引结构文件

聚集索引——叶子节点包含了完整的数据记录

为什么InnoDB表必须有主键,并且推荐使用整形的自增主键?

为什么非主键索引结构叶子节点存储的是主键值(一致性和节省存储空间)

b80751ec86427a855635d738f488cfaf.png

指针是双向的, 所以也适用于 where id<18,或者 where id>18

42190e309c65657916b8c07419fe4766.png

MyISAM:

不支持事务的设计,但是并不代表着有事务操作的项目不能用MyIsam存储引擎,可以在service层进行根据自己的业务需求进行相应的控制。

不支持外键的表设计。

查询速度很快,如果数据库insert和update的操作比较多的话比较适用。

整天 对表进行加锁的场景。

MyISAM极度强调快速读取操作。

MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。

索引文件和数据文件是分离的, 每一个表三个文件.frm(表数据结构), .MYD(数据文件), .MYI(索引文件)

b364d12060a370288f56c734a77fbaf7.png

Memory存储引擎

Memory存储引擎采用逻辑介质是内存,因此其访问速度会非常快,其默认使用的是hash索引,一旦服务关掉,数据就会丢失。Memory存储引擎要求存储的数据是长度不变的格式,比如blob和text类型都不可以

适合的场景:

1、适合保存目标数据比较小,并且频繁进行访问的,如果太大的话,容易造成内存溢出,通过max_heap_table_size来设定表的大小;

2、存储在Memory引擎的表中的数据,如果丢失也没有关系的

3、如果数据是临时的,必须立刻用的到,那么可以存在内存当中。   Memory存储引擎支持hash索引和B树索引,hash索引用来比较相等会比较快,范围查找会比较慢,B树索引可以部分查询和通配查询,也可以使用,= 等方便数据挖掘。  Memory存储引擎创建的表,最好是使用完之后,就删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值