我们是否还需要用Memory引擎的表

Memory引擎表的特点

  • Memory表是堆组织表,对应的Iondb是索引组织表。
  • Memory索引顺序是按照写入顺序,Innodb是按照主键顺序
  • Memory的索引存放规则决定这他所有索引是一样的没有主键概念
  • Memory的索引和数据是分开存放的,在主键ID索引里,存的是每个数据的位置,且顺序是按照hash顺序。Innodb是按照B+树存放的
  • Memory不支持blog和Text字段,所有行数的长度都相同。(要充分的利用内存嘛~)
  • Memory数据出现空洞时候可以任意位置插入数据,Innodb为了保证索引顺序只能在后面递增插入数据
  • Memory数据位置发生改变需要改所有的索引,而Innodb只需要改主键位置,

不推荐用Mermory在生产环境的原因

  1. 锁粒度不够:不支持行锁,性能会很差,往往不如Innodb
  2. 由于Mysql重启后会删除Memory表数据,数据持久性会有问题
    1. 尤其是双M架构,当备库重启后,会同步binlog给主库把表清空