欧博网站
热门标签

网上赌博犯罪吗博彩玩家 | 数据库索引时代之B树索引

时间:2023-10-30 06:25    点击次数:120
皇冠信用盘代理网上赌博犯罪吗博彩玩家

[[437658]]

本文转载自微信公众号「小菜学编程」,作家fasionchan 。转载本文请关系小菜学编程公众号。

前边咱们先容了 哈希索引 和 LSM树索引 ,它们皆基于日记结构式的数据文献。诚然工程界对这种索引的招供度正数见不鲜,但还远不是最受迎接的索引时代。

那么,当今应用最广的索引时代又是什么呢?

您可能早就有所耳闻——这便是本文要探讨的 B树( b-tree )索引。B树不错说是数据库索引时代中的武林盟主,约略几十年长盛不衰,必定有它我方的独门诀要。

索引结构

跟咱们在 LSM树 一节中提到的 SSTable 一样,B树亦然将数据组织成有序体式,因此支执领域查询。尽管如斯,它们的底层结构却透顶不同,B树有我方独有的盘算玄学。

日记结构式索引将数据分红大小可调换的分段,时常是几兆或更大,然后再规定写入磁盘。而B树则所以 块( block )为单元来组织数据,块大小是固定的,时常是 4KB ,也不错更大。这种盘算更逼近磁盘的硬件结构,因为磁盘也所以块为单元来读写数据的。

ug环球百家乐

出于性能方面考虑,揣测机时常以一定字节数(如 4KB )为单元来存取数据。在不同的场景有不同的叫法:磁盘数据一般称为 块 ( block ),内存数据一般称为 页( page )。这两种场景数据库均有波及,因而术语不错混用。

平博捕鱼

磁盘中的每个数据块皆有一个唯一的地址,因此数据块间不错相互援用,有点像内存中的指针。因此,咱们不错用这种形势,将数据块组织成一棵树——B树( b-tree )。

博彩玩家

如上图,为简化研究,咱们假定数据库记载唯独两个字段:一个是索引键,类型为整数;另一个是值。数据按索引键排序,治安保存在一个数据块中,如蓝色数据块所示。

紫色部分数据块为索引,它将索引键的领域分辨为多个区间;每个区间保存着另一个数据块的地址( ref ),示意该领域内的数据,不错通过 ref 指向的数据块找到。上图中红色的 ref 示意, 之间的数据,不错通过其左下方的另一个索引数据块找到。

要是子领域内的数据记载还好多,单个数据块容纳不下,ref 便指向另一个索引块,进一步将数据领域分小;要是子领域内的数据记载未几,一个数据块就能装下,ref 便平直指向数据。

皇冠客服飞机:@seo3687

这么一来,ref 就将数据块组织成一棵多叉树,数据块主要分为两种:

一种用于保存数据记载,如上图蓝色部分,位于树的 叶子节点 ,简称 数据块 ; 一种用于保存索引,如上图紫色部分,位于树的的 里面节点,简称 索引块 ;

从树的根节点索引块启程,凭据数据键地方领域的 ref 逐层往下找,即可定位到数据记载。举个例子,当查询键为 400 的记载时,搜索旅途如绿色箭头线所示:

从根索引块启程,400 落在区间 [343, 470) ,凭据该区间 ref 找到下一级;

来到下一个索引块,400 落在区间 [384, 412) ,凭据该区间 ref 找到下一级;

最终来到蓝色的数据块,待查找的数据记载就在里面;

领域查询

为了支执领域查询,数据库将数据记载排过序后才保存到数据块,相邻数据块间则通过双向链表指针流畅在通盘。

皇冠现金网

这么一来,数据库只须先定位领域元素,然后以此为开端遍历数据即可:

要是查询条目为小于,则从后往前遍历数据;

要是查询条目为大于,则从前去后遍历数据;

如上图,以查询大于等于 400 且小于 420 的数据为例:

数据库定位到键值为 400 的数据记载,如红框所示;

数据库搜检本数据块内 400 以后的记载,知足小于 420 则取出;

赌球

数据库凭据链表指针找到下一个数据块,连续搜检里面的数据记载,知足小于 420 则取出;

数据库疏浚圭臬 3 ,逐一往后遍历数据块,直到稀有据记载大于等于 420 ;

分支因子

咱们扎眼到,B树是一种多叉树。那么,为什么不成用最通俗的二叉树呢?

本色上,每个树节点最多不错有几许个分叉,是树的一个超越进攻的本性—— 分支因子( branching factor )。咱们知说念,在数据记载数一定的前提下,树的分支因子越大,高度越低。

咱们使用排序树来查找数据时,从根节点开动不停搜索,最终来到叶子节点。换句话讲,咱们需要搜检的节点数,其实便是树的高度。

而数据库数据需要执久化并保存在磁盘里面,那磁盘有什么本性呢?

磁盘 IO 比较慢,非规定的磁盘 IO 更是如斯; 磁盘 IO 以 块( block )为数据单元,单次 IO 老是读写通盘块;

在排序树中搜索数据,显然是闹翻读,而不是规定读。因为咱们无法保证 ref 指向的数据块就在刻下块背面,磁盘时常只可再行 寻说念( seek )后智商读取数据。由于磁盘寻说念很慢很慢,IO 次数必须尽量减少,因此树的高度应该尽量压低。

另一方面,磁盘以块为单元读写数据,一个块不错保存好多分支信息。要是一个块只保存两个分支,那就花消了。因为就算只保存两个分支,读的时期照旧必须整块读,支出是一样的。因此,不如尽量耕种分支数,这么还能减低树的高度,进而减少 IO 次数。

9月27日,国家发改委等部门印发《电力负荷管理办法(2023年版)》《电力需求侧管理办法(2023年版)》,两大管理办法中均提到虚拟电厂建设相关政策。

时常 4KB 大的数据块不错保存多达 500 个分支,要是树的高度为 3 ,不错复古多达 个数据,逾越一亿。有道理的是数据库根索引块时常缓存在内存中,这么只需 2 次 IO 操作即可从逾越 1 亿数据中找到念念要的阿谁。

总而言之,B树险些便是为磁盘量身定制的数据结构,它充分地欺诈了磁盘的本性:

磁盘以块为单元读写数据,B树就以块为节点,组织成多叉树;

磁盘 IO 很慢,B树就通过耕种分支因子,缩小树的高度,减少 IO 次数;

写操作

数据库写操作分为两种,一种是 更新( update ),一种是 插入( insert )。

要是要更新数据库中的已有记载,先搜索B树找到包含该记载的数据块(叶子节点)。然后修改数据块的记载值,再将个数据块写回磁盘。由于数据块仅仅内容转换了,位置不变,因此B树中任何对该数据块的援用仍然有用。

要是要插入一条新记载,不异先搜索B树,找到数据领域包含新记载的数据块(叶子节点)。要是数据块还有弥长空间,就将新记载添加参预并保存到磁盘即可。要是数据块悠然空间不及,则需要将其分裂为两个:

如上图,以插入 399 为例:由于主义数据块仍是存满,需要将其分裂为两个。分裂后的数据块皆唯唯独半数据,新记载保存在其中的一个。

要是新记载的键相对较小,则保存在左边的数据块;不然就保存在右边的数据块。399 跟该领域的其他数据比拟较小,因此保存在左边数据块。

由于数据块发生了分裂,因此它们的父节点需要更新,以便记载最新的数据领域和分支信息。

www.duhgu.com孟晚舟事件发生后,中方迅速采取前所未有强硬反制举措。根据公开报道,孟晚舟扣押至今,仅中国外交部发言人已经通过各种渠道公开表态200多次,痛批美国强盗行径,要求加拿大无条件释放孟晚舟。中国驻加拿大使领馆一直给予孟晚舟贴身帮助。

B树算法不错保证树的 均衡( balanced ):一棵包含 个键的B树,高度不逾越 ,不然树的性能会大打扣头。时常一棵 3 层或 4 层深的B树即可容纳数据库所稀有据,因此查询时不消遍历太大皆据块,性能相对较好。

网上赌博犯罪吗

皇冠体育hg86a

至此,三种主流的数据库索引时代仍是全部先容兑现。除了本节先容的B树索引,其他两种分别是:

 金沙足球出租

哈希索引 LSM树索引

 



上一篇:平博体育网站数据丢失_吴谢宇庭审时振奋哀泣, 强调在家就像关在笼子里, 乞求给一条活路
下一篇:彩票平台排名博彩平台免费游戏 | 广东男篮因祸得福, 爆冷输球后收不测之喜, 尽显杜锋大奢睿

网友评论