摘要: 由于现在我这个是一个教学级别的数据库,没有任何特点,于是我打算把他改造成工业级别的冷热分层关系型数据库。使用场景是电商,12306之类流量高的数据库。可以从五个维度围绕我之前的baseline版本做优化:缓存,查询,索引,写入和运维。下面我将从五个角度开始介绍。 1.缓存维度:分层优先级缓存体系优化 阅读全文
posted @ 2026-03-04 18:10 cyusouyiku 阅读(16) 评论(0) 推荐(0)
摘要: 1.Page 用PAGE_SIZE来规定页的大小,char数组存储,我这里设置的4096 2.BufferPoolManager 我现在的replacer用的是clock策略,算是一个baseline,这部分的算法是未来提高的很大优化点。主要的成员函数是:FetchPage,UnpinPage,Fl 阅读全文
posted @ 2026-03-04 16:32 cyusouyiku 阅读(20) 评论(0) 推荐(0)
摘要: 本项目是andy本人于2025.11开始开发,2026.2基本完成的的一个关系型数据库内核,最初目的是提高C++代码能力和工程能力。从本章博客开始讲解如何从0开始开发一个数据库内核。期望在后续的开发过程中能把他转型成满足特定需求场景的工业级数据库。 项目采用分层架构: 自底向上: 存储层:磁盘存储和 阅读全文
posted @ 2026-03-04 16:07 cyusouyiku 阅读(17) 评论(0) 推荐(0)
摘要: 首先来预览一下主Reactor头文件: namespace atlas { /// 主 Reactor:仅负责 accept 新连接,分发给 SubReactor,就是对Reactor加上了连接请求和分发给SubReactor class MainReactor : public Reactor { 阅读全文
posted @ 2026-03-04 11:22 cyusouyiku 阅读(9) 评论(0) 推荐(0)
摘要: 到目前为止,我们都很大程度上忽略了测试的具体机制,以及被测程序的规模,然而,由于大型程序(例如包含 500 条语句或 50 个以上类的程序)需要特殊的测试处理,因此本章将讨论构建大型程序测试体系的第一步:模块测试。 模块测试(或称单元测试)是对程序中的各个子程序、子例程、类或过程进行测试的过程。更具 阅读全文
posted @ 2026-03-04 11:03 cyusouyiku 阅读(11) 评论(0) 推荐(0)
摘要: 抛开第二章讨论的心理学问题,程序测试中最重要的考虑因素是设计和创建有效的测试用例。 无论测试多么有创意,看起来有多么完善,都无法保证程序中不存在出错误,测试用例设计之所以至关重要是因为穷尽测试是不可能的,那么显然的策略就是尽可能让测试变得完备。 所以测试的核心问题就是:在所有的测试用例中,哪一个子集 阅读全文
posted @ 2026-03-04 10:56 cyusouyiku 阅读(14) 评论(0) 推荐(0)
摘要: 最早的时候认为代码是给机器写的所以只在机器检查跑就行了,后来发现阅读代码效率更高,发现错误越早,修复成本越低,正确的修复的概率越高。 审查和走查 主要的人工测试的方法主要有三个:代码审查,代码走查和用户测试。 审查和走查都由一组人员阅读或者目视检查程序,两种方法都要求参与者做一些准备工作。高潮是一场 阅读全文
posted @ 2026-03-04 10:21 cyusouyiku 阅读(8) 评论(0) 推荐(0)