重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
索引是帮助MySQL高效获取数据的排好序的数据结构
创新互联专注于老城企业网站建设,响应式网站开发,商城开发。老城网站建设公司,为老城等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务2、索引数据结构数据结构可视化:Data Structure Visualization
2.1、二叉树特点
左子节点比当前节点值小,右子节点比当前节点值大
存在的问题
如上图,当进行顺序新增数据时,二叉树就变成单边的”链条“,这样查找数据的效率就变慢了。
例如查找5,就要经过5次查找。
2.2、红黑树特点
存在的问题
红黑树和二叉树对比,在一定程度上解决单边过长的问题,但它存储高度的问题。如果数据量过大,IO次数更多,性能损耗更大
2.3、Hash表例如图中查找Tom,只要通过一次hash计算就可以确定数据所在的位置。
优点
存在的问题
B-Tree 是一种平衡的多路查找(又称排序)树,MongoDB索引默认的存储结构使用的就是B-Tree
特点
存在的问题
B+Tree是在B-Tree基础上的一种优化,MySQL索引默认的存储结构使用的就是B+Tree。
特点:
假如:以一个高度为3的B+Tree为例,B+Tree的表都存满了,能存储多少数据?
SHOW GLOBAL STATUS like 'Innodb_page_size';
假设主键id为bigint类型,长度就是8B,指针大小为6B,一共就是14B,假设最后一层,存放的数据data大小为1kb
第一层大节点数为: 16k / (8B + 6B) = 1170 (个)
第二层大节点数也应为:1170个
第三层大节点数为:16k / 1k = 16 (个)
所以一张B+Tree的表最多存放 1170 * 1170 * 16 = 21902400 ≈ 2千万。
B+Tree结构的表可以容纳千万数据量的查询。而且一般来说,MySQL会把 B+Tree 根节点放在内存中,那只需要两次磁盘IO(第二层1次,第三层1次)
二、存储引擎 1、MySIAM存储引擎(非聚集)MyISAM索引文件和数据文件是分开的,数据结构及数据、索引在磁盘中文件有三个,
.frm 文件存储数据表定义
.MYI存储索引
.MYD存储实际数据
叶子结点中的data存储的都是该行数据对应的磁盘指针,根据指针再去.MYD拿数据
2、InnoDB存储引擎(聚集)InnoDB存储引擎它的表数据文件本身就是按 B+Tree 组织的一个索引文件。不同于MyISAM存储引擎是,数据不分离。
.frm文件存储数据表定义
.ibd文件存放的索引和实际数据
聚集索引
非聚集索引
三、联合索引比较name再比较age再比较position,如果第一个字段相等,看第二个字段。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧