标签:辅助 处理 替代 god 无法 文件 innodb 保存 组合
索引是数据库中对某一列或多个列的值进行预排序的数据结构,提高检索效率
磁盘最小存储单元是 扇区,512 字节
文件系统的最小存储单元是 块,4k
InnoDB存储引擎的最小储存单元是 页,16K。
当存储器的某个位置的数据被访问,其附近位置的数据也会被访问
主键索引表,从左往右扫描叶子节点
InnoDB 存储引擎的最小存储单元是页,页可以用于存放数据也可以用于存放键值 + 指针,在 B+ 树中叶子节点存放数据,非叶子节点存放键值 + 指针。
索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而在去数据页中查找到需要的数据
聚簇索引
标准的单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表
因为,MySQL 为了提高性能,会将表的索引装载到内存中。InnoDB buffer size 足够的情况下,其能完成全加载进内存,查询不会有问题。但是,当单表数据库到达某个量级的上限时,导致内存无法存储其索引,使得之后的 SQL 查询会产生磁盘 IO,从而导致性能下降。当然,这个还有具体的表结构的设计有关,最终导致的问题都是内存限制。
根据一个md5过的id将大表水平分割
优势:减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;
劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作的效率,因为在修改数据表的同时还需要修改索引表
Inodb存储引擎 默认是 B+Tree索引
MyISAM 存储引擎 默认是Fulltext索引
Memory 存储引擎 默认 Hash索引
相同:
都是平衡多叉树结构,多路搜索树
不同:
B+tree所有关键字存储在叶子节点,非叶子节点不存储真正的data。(键值 表中记录的主键)
B+tree为所有叶子节点增加了一个链指针(指针 存储子节点地址信息)
叶子节点data数据记录都。(data 表中记录除主键外的数据)
B-Tree
每个节点中存储key值,还有data值。而每一个页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小,当存储的数据量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率
B+Tree
所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度
聚集索引的叶子节点存放整张表的行记录数据
辅助索引的叶子节点存储聚集索引的主键
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。(提供行级锁)
BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
标签:辅助 处理 替代 god 无法 文件 innodb 保存 组合
原文地址:https://www.cnblogs.com/justblue/p/13022551.html