• 极客mysql38


    InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。这种方式,我们称之为索引组织表(Index Organizied Table)。

    而 Memory 引擎采用的是把数据单独存放,索引上保存数据位置的数据组织形式,我们称之为堆组织表(Heap Organizied Table)。(数据索引分开)

    InnoDB和Memory引擎的区别:

    1、InnoDB 表的数据总是有序存放的,而内存表的数据就是按照写入顺序存放的;

    2、当数据文件有空洞的时候,InnoDB 表在插入新数据的时候,为了保证数据有序性,只能在固定的位置写入新值,而内存表找到空位就可以插入新值;

      由于内存表的特性,每个数据行被删除以后,空出的这个位置都可以被接下来要插入的数据复用。

    3、数据位置发生变化的时候,InnoDB 表只需要修改主键索引,而内存表需要修改所有索引;

    4、InnoDB 表用主键索引查询时需要走一次索引查找,用普通索引查询的时候,需要走两次索引查找。而内存表没有这个区别,所有索引的“地位”都是相同的。

    5、InnoDB 支持变长数据类型,不同记录的长度可能不同;内存表不支持 Blob 和 Text 字段,并且即使定义了 varchar(N),实际也当作 char(N),也就是固定长度字符串来存储,因此内存表的每行数据长度相同。

    hash 索引不支持范围扫描,内存表也是支持 B-Tree 索引的。

    在 id 列上创建一个 B-Tree 索引,SQL 语句可以这么写:

    alter table t1 add index a_btree_index using btree (id);

    这时,表 t1 的数据组织形式就变成了这样:

  • 相关阅读:
    网页日历显示控件calendar3.1
    切换“使用被动式FTP”
    href="javascript:xxx(this);"和onclick="javascript:xxx(this);"的区别
    CSS布局--上中下布局(上下固定,中间自适应)
    css字体颜色动画
    怎么让jQuery支持swipe事件
    html 5 canvas
    javascript面向对象
    WEB相关存储方式
    angularjs
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/13560328.html
Copyright © 2020-2023  润新知