跳转至

FAQ

这里收集了一些近年来本实验相关的常见问题,我们会在每年课程进行中动态更新本节。

参考实现的页式文件系统似乎有 bug,同时打开多个文件会出现混乱?

在参考代码 testfilesystem.cpp 中展示了正确用法:启动系统时要调用静态成员函数 MyBitMap::initConst(),否则哈希值计算错误可能导致多个文件被视为同一个。

数据库可以使用自定义文法吗?

必做功能不可以,选做功能可以。不过我们希望大家尽量使用本文档中提供的文法,以节约验收的时间成本。

数据库有性能要求吗?

对于索引功能(如在SELECT、UPDATE等语句中涉及索引列与常量的比较操作),要求能够在百万级数据下查询时明显比不用索引快。希望大家不要用一些投机手段,如:故意降低不用索引时数据库的性能。其他功能 CI 范围内以 CI 要求为准,线下验收部分要求每条语句执行时间不超过30分钟。

数据库可以实现说明文档没有列举的选做功能吗?

可以,但是需要自己构造测例进行展示,并向助教解释该功能的实现。对于说明文档列举的必做、选做功能,我们会准备测例进行测试。

数据库一定要实现批量导入数据的功能吗?

由于最终测试的表有很多行,无法通过逐行插入的方式导入到数据库中,所以大家一定要实现批量导入数据的功能,CI 也对此有要求。

最终测试时会有多大数据规模?

(最后更新于 2023秋)各表总数据量小于 1GB,单表列数不超过 10,表数不超过 8,单列最大长度不超过 2048B,表名、列名长度不超过 32B。

最终测试的测例会提前发布吗?

不会。但是我们会提前发布最终测试的数据,大家可以导入到自己的数据库中,并自己构造测例进行测试。

验收时会考查 SQL 语法错误的输入报错吗?

不会,输入一定是能通过 parser 的。但是一些输入语句可能会破坏完整性约束,要求数据库按照说明文档要求的方式执行。

大作业是否可以多次线下验收?

从2023年秋季学期引入CI后,每组只能进行一次线下验收。

CI 测试是否有次数限制?

CI 测试没有直接限制运行次数,但是不必要的连续 CI 运行可能会导致 CI 阻塞,干扰其他同学实验,因此助教可能会在出现此类情况时进行罚分。CI 运行的测例在本地也可以运行,建议你在完成本地测试后再用 CI 提交成绩。

是否可以在线下验收时修改源代码?

不可以。

如果多人组队完成,线下验收时所有人都必须到场吗?

不要求所有人都到场,但是验收时助教会提问一些数据库实现的细节,要求到场的人能够回答。

Authors: Congyuan Rao (85.71%), Zhaoyan Sun (14.29%)