MySQL的InnoDB引擎与Memory引擎

区别

  1. Memory引擎中使用的是内存表;InnoDB中表存放在磁盘中。
  2. A) InnoDB使用“索引组织表”:是将数据存放在主键索引上的(数据位置在磁盘中改变,只需要修改主键索引),其他索引指向主键id;
    B) Memory使用的是“堆组织表”:是将数据单独存放在一块内存中,每一个索引都指向数据 在内存中的位置(数据位置在内存中改变后每一个索引都要修改)。
    C) 所以查询数据时,InnoDB需要走一次或者两次索引,Memery统一走一次索引,再根据数据位置去内存中找数据。
  3. InnoDB表支持变长数据(varchar),Memory只支持定长数据(char),所以内存表每行数据长度相同(相同字段的值长度一致)。
  4. InnoDB表要保证数据有序插入,所以当之前的数据行被删除后,只会在当前最大的id行插入新的数据记录。而Memory内存表找到空行就会插入新数据(乱序插入)。

请添加图片描述

内存表的特点

  • 内存表的优势:速度快,因为内存读写天然支持hash索引。
  • 内存表的缺点:
    a. 只能使用表锁,锁粒度过大,不适合高并发;
    b. 持久化问题,数据库宕机或重启会丢失数据。

建议平时一般的表都是用InnoDB表,对于执行sql语句过程中可以使用内存临时表

参考文章:

https://time.geekbang.org/column/article/80495

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值