11 2022 档案
摘要:B 树是一个家族,感觉 B+Tree 对于喜欢使用 MySQL 的我来说是最常听说的数据库索引结构之一了。但是我从来没有从头到尾自己实现过一个 B+Tree,像类似的数据结构,感觉不真正自己写一次就很难领悟其中的细节。 B+ Tree 的定义 当我们在组织这个树型结构的时候,我们是以节点的形式组织的
阅读全文
摘要:这一章大概是一个 hash tables 的科普。因为刚上课不久 andy 就说我们自己不会去实现一个这玩意儿。现在有非常优秀的方案,你应该去使用那个最好的方案,那个方案把其他方案都给碾碎了。我们当然就应该使用它。 xxhash 是之前搞 zstd 的 facebook 哥们搞的。这俩玩意儿一个是最
阅读全文
摘要:这一章节的重点在 buffer pool manager buffer pool manager 这一章学完我感觉我才理解了,其实我在数据库里拿到所有的数据似乎都过了一次内存。而内存有自己的算法和策略可以尽量帮我缓存我会多次访问的数据。 访问数据的流程大概类似于 execution engine 执
阅读全文
摘要:Storage 1 主要介绍了 slotted-page 组织数据的情况。但是这种方式会有一些问题比如 1. 页分裂 (比如在一个页上面操作,后续对其进行操作可能会有删除的操作后续可能需要使用 compaction 来合并对应页以释放空间) 2. 无用的 io 消耗。比如说如果我们使用 MySQL
阅读全文
摘要:最先的一部分还是介绍存储介质速度层级 总的来说就是 cpu > memory > disk 但是究竟快多少呢? 我觉得这里只需要记住一个常用的关键论点,内存约比 ssd 快 150 倍 比普通的 HDD 快 20000 倍。单从这里就可以比较清晰的知道,在内存里汇总计算大量数据对数据库效率的重要性。
阅读全文
摘要:最近做的需求又开始贴近 SQL 了,感觉有点手生。毕竟最近半年切换上下文有点频繁,做的东西有点杂。 之前比较少对复合字段进行操作,涉及到数组操作和结构体操作, SQL 竟也提供了一大套完整的操作函数。越发觉得现在 SQL 真是强大啊。。。 谈论 group by array<struct<a str
阅读全文