![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 85
liangximin2046
学生
展开
-
2021 CMU-15445/645 Project #4 : Concurrency Control 【完】
0 介绍2021年秋季15445的第四个project是并发控制相关的内容,主要是实现一个LockManager。这个LockManager可以依据事务需要进行tuple级别的琐管理,总的来说还是比较考验多线程编程的基本功,希望读者在做之前理解mutex、condition_variable的工作原理以便方便调试bug,这些内容在我之前的博客做过总结,同时对数据库系统概念这本书里的相关章节进行阅读。下面介绍一下具体实现方案,本文依然不会提供源码。同时推荐这篇知乎文章,我做的时候收到不少启发,写得也比我详细原创 2022-03-15 21:13:17 · 2355 阅读 · 8 评论 -
2021 CMU-15445/645 Project #3 : Query Execution
0 介绍21年秋季的15445第3个Project是要完成一些执行器(executor)来实现一些数据库操作比如遍历、插入、更新、删除、连接等等。虽然算法难度上不如Project2,但是需要阅读大量代码并能调试BUG,还是有一些麻烦。在做之前,务必阅读包括但不限于Catalog、TableInfo、IndexInfo、Expression、PlanNode、Schema、Tuple这些类的代码,这样会好做一些。1 实现接下来介绍一些有难点的执行器实现。1.1 Seqential Scan这个执行器原创 2022-01-21 17:31:52 · 2624 阅读 · 8 评论 -
2021 CMU-15445/645 Project #2 : Hash Index
0 前言21年CMU-15445的Project2是实现一个基于可拓展哈希(EXTENDIBLE HASH)的哈希索引。比起Project 1,Project2的难度要高不少,我自己跑完所有的测试花了40s,只能算是一个中规中矩的成绩,在gradescope上好一点的成绩可以压缩到30s以内。不过我还是把它写成博客,希望能帮助到没有头绪的朋友,也希望完成的比较好的朋友能指正。下面说一下Project2的要点,不过按照课程要求,这里就不放代码了。对于EXTENDIBLE HASH算法理解有困难的朋友可以在原创 2022-01-03 16:33:28 · 3426 阅读 · 3 评论 -
2021 CMU-15445/645 Project #1 : BufferPool Manager
0 介绍最近开始做CMU的2021秋季15445/645数据库课程项目,课程项目的内容是实现一个小型DBMS BUSTUB的关键组成部分。2021年秋季课程的相关信息可以在课程官方网站获得,关于Project的相关配置可以在Project #0 c++ primer里获取,对此有疑问的读者可以留言提问,这里就不多说了。总而言之,这个课程Project对数据库学习和c++学习有很大帮助。1 Project #1实验内容Project1的实验内容是实现一个Buffer Pool Manager,Buffe原创 2021-12-16 19:16:29 · 2673 阅读 · 5 评论 -
数据库优化技术之向量化计算和编译执行
0 介绍最近开始接触一个战斗民族开发的列式数据库ClickHouse,它是一个高性能的OLAP,根据一些测试,它的查询效率达到mysql的数十到数百倍。那么至于它的性能为何如此之高,一个很重要的优化就是它实现了向量化计算和编译执行,这里介绍几篇文章解释这两个优化操作。1 火山模型在谈优化之前,不妨先读一下这篇文章火山模型介绍。火山模型的缺点在于每次都是计算一个 tuple(Tuple-at-a-time),这样会造成多次operator节点调用 next ,也就是造成大量的虚函数调用,这样会造成 CP原创 2021-03-30 21:33:09 · 517 阅读 · 0 评论