底层数据是什么意思

六六 TOP1 2893

底层数据,就是这行业里面最底层的基础数据内容。这个,我们叫底层数据。底层数据一般是格式化的数据。索引是帮助MySQL高效获取数据的排好序的数据结构,该数据结构是存储在文件中的。

一、底层数据结构总结

1.List

– ArrayList:Object数组

– Vector:Object数组

– LinkedList:双向链表

2.Set

– HashSet(无序,少数):基于HashMap实现,底层采用HashMap来保存元素

– LinkedHashSet:LinkedHashSet继承于HashSet,内部通过LinkedHashMap来实现

– TreeSet(有序,少数):红黑树(自平衡的排序二叉树)

3.Map

– HashMap:JDK1.8之前由数组+链表组成的,数组是HashMap的主体,链表是为了解决哈希冲突而存在的。JDK1.8之后,当链表大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间

– LinkedHashMap:LinkedHashMap继承自HashMap,在原有结构上增加了一条双向链表,使得上面结构可以保持键值对的插入顺序。同时通过对链表进行相应的操作,实现了访问顺序相关逻辑

– TreeMap:红黑树

二、二叉树数据结构

二叉树的数据结构其实是不适合作索引的,虽然有一定程度的减少了查询的次数。但是效率并不是很高。

二叉树的查找数据的时间复杂度是O(log2N),查找时间适合深度有关系的,深度越高查找时间越长。但是二叉树如果要是已主键为索引,然后主键是自增的话,那么就会发生链表的情况,这样是没有减少查询次数,如果数据量大的,查询时间会很长,和没有使用索引几乎无差别的。

三、红黑树数据结构

红黑树它平衡了二叉树,它具有一个自动平衡的功能,使得自增id不会成为链表状态。这样可以使查询时间减少。完美的避开了二叉树的致命缺陷。下面我们看一下红黑树的数据结构。

它不像二叉树那样,呈现链表状态,他能一定程度的减少查询次数,缩短查询时间。这个数据结构如果是内存中的话,那么运行效率是非常高,但是这个数据结构中在索引中,却不是很适合做索引的数据结构,这是为什么呢?

因为索引是存储在文件中的。刻在磁盘上面,数据量增加后,文件大小就会增加。如果是千万级的数据量那么文件会很大。而数据是没有办法一次性加载到内存中的。所以加载到内存中需要多次加载数据,每一次都不能确保数据在相同的磁道上,所以在存储数据的时候,需要尽量存在相同的磁道上面。磁盘读取数据时,是顺序读取的,这样是不会产生寻道时间,只有磁盘旋转。而红黑树没有顺序分布在磁盘中,所以查询的时候回出现不断地寻道。如果数据量大的情况下,会产生更多的寻道。这样在数据库查询中,会大大降低查询速度。


最后,推荐我们的管理工具给大家。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部