• MySQL引擎


    MySQL提供多种存储引擎,通过命令 show engines;   查看

    查看当前默认的存储引擎  show variables like '%storage_engine%';

    查看某个表用了什么引擎  show create table 表名;

    MyISAM引擎:

    没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT或UPDATE数据时即写操作需要锁定整个表。存储了表的行数,SELECT COUNT(*) FROM TABLE时,只需要直接读取已经保存好的值而不需要进行全表扫描,如果表的读操作远远多于写操作且不需要事务支持,那么MyISAM是个好选择。

    InnoDB引擎:

    InnoDB是MySQL默认的引擎,提供对ACID事务的支持,并且实现SQL标准的四种隔离级别,提供行级锁和外键约束,它的设计目的是处理大容量数据库系统,在运行时,Innodb会在内存建立缓冲池,用于缓冲数据和索引。没有保存表的行数,当SELECT COUNT(*) FROM TABLE时,需要扫描全表。使用行级锁不是一定的,如果一个SQL语句不能确定要扫描的范围,InnoDB表同样会锁全表。

    MyISAM引擎索引实现

    B+树作为索引结构,叶节点的data域存放的是数据记录的地址。

    主键索引原理图:

     辅助索引:

    InnoDB引擎索引实现

    同样使用B+树作为索引结构。MyISAM索引文件和数据是分离的,索引文件仅保存数据记录的地址,而在InnoDB中,表数据文件本身就是按照B+树组织的一个索引结构,叶节点data域保存完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

    主键索引:

     辅助索引:

    InnoDB索引和MyISAM索引的区别:

    1.主索引的区别,InnoDB的数据文件本身就是索引文件,而MyISAM的索引和数据是分开的。

    2.辅助索引的区别,InnoDB的辅助索引data域存储相应记录主键的值而不是地址,而MyISAM的辅助索引与主索引没有多大的区别。

  • 相关阅读:
    寒武纪思元290芯片和MLU290-M5卡
    NUMA Domian和NUMA Distance
    Understanding Habana Labs's GPU
    AMD Instinct MI100-首个FP64性能超10TFLOPS的计算卡
    编程小记
    Redis二进制安全
    Redis布隆过滤器与布谷鸟过滤器
    缓存与缓存一致性协议
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5840084.html
Copyright © 2020-2023  润新知