一般做网站要多少钱,广西网站建设开发外包,ssc网站建设教程,网络项目设计方案文章目录 1. 数据库索引2. BTree 索引结构 1. 数据库索引
索引是为了提高数据的查询速度#xff0c;相当于给数据进行编号#xff0c;在查找数据的时候就可以通过编号快速找到对应的数据。索引用的是 B Tree 数据结构。
乱序插入数据#xff0c;会自动按照 id 进行升序排… 文章目录 1. 数据库索引2. BTree 索引结构 1. 数据库索引
索引是为了提高数据的查询速度相当于给数据进行编号在查找数据的时候就可以通过编号快速找到对应的数据。索引用的是 B Tree 数据结构。
乱序插入数据会自动按照 id 进行升序排列这是因为主键自带索引 2. BTree 索引结构
数据存储的内部结构类似于链表的形式通过指针关联不同的数据。第一位是索引第二位是数据第三位是后继指针指向下一个节点。 毕竟它类似于链表当数据量很大的时候这种结构的查询速度还是很慢的那么 MySQL 是如何解决的呢
MySQL 中有一个 page 的概念相当于给数据进行分页把一部分数据存入一个 page 中先查 page 再查数据 相当于一个分类管理。 每个 page 可以存储 16KB 的数据这样就相当于给数据建立了上层目录查找的时候先找大目录再找具体的数据。 MYSQL 给 page 也提供了快速查询的目录这样就可以清晰地知道你要查询的数据是在第几页然后直接去第几页找就可以了。 多一层目录可提高数据查询的效率
把每个 page 中的第一条数据的索引和后继指针取出来放到 page 目录里面。 1P 第一页3P 第二页5P 第三页。 查询数据的时候会先找到它的 page而这个 page 到底是多少要看 id 在哪个区间内比如 id 4 的数据就在第二页因为 3 id 5。找到 page 之后再进入 page 中查找具体的数据。 这个目录也是有容量的所以我们还会开启第二个、第 N 个 page 目录。一个 page 目录中也可以存储 16KB 的数据如果是海量数据page 目录也会有很多这样查询起来也是比较慢的。 为了提高查询效率MYSQL 就给 page 目录再加了一层目录。 同样的方法依然是取出各 page 目录里面的第一项索引和指针存入更上层的目录中。 一般来说三层目录就足够了要查找一个数据的时候就从最上面一层一层分级查找而这种结构就叫做 BTree
假设一条记录的空间为 32 个 byte那么最底层一个单元可以存储的数据为 16 * 1024 / 32 512 条 第二层只需记录 id 和 p假设是 6 个 byte则一个单元可以保存的数据是 16 * 1024 / 6 2730 条 第三层每个单元存储的数据和第二层一样是 2730 条。 所以总共可以存储的数据条数为三层数据相乘512 * 2730 * 2730 38亿。