SimpleDB icon indicating copy to clipboard operation
SimpleDB copied to clipboard

numPage的大小计算

Open AllenWrong opened this issue 5 years ago • 11 comments

(int) (file.length / pagesize)的话,不就向下取整了吗。这不就把文件最后不足一页大小的数据忽略了吗?还是应该把这些记为一页呢

AllenWrong avatar Jan 08 '21 12:01 AllenWrong

文件是以页的形式储存在磁盘中,大小必然是页大小的整数倍。比如某一文件的页刚好全满,又要添加新的数据,那么是在磁盘中开辟一个新的页储存新数据,如果新数据只占用了页的一小部分,多的空间依然保留着等待其他数据的添加。这里的file.length是指文件的容量/空间,而不是实际大小。

adiamoe avatar Feb 16 '21 07:02 adiamoe

请问有必要使用管网上说的虚拟机吗(而且那个站点好像已经挂了),我这边是直接用的IDEA,Windows10,JDK8可以吗

JackTan25 avatar Apr 18 '21 13:04 JackTan25

就是这个网站 http://beta.saasbook.info/bookware-vm-instructions ,课程主页说让我们在这个链接里面找虚拟机镜像,可是这里打不开了

JackTan25 avatar Apr 18 '21 14:04 JackTan25

就是这个网站 http://beta.saasbook.info/bookware-vm-instructions ,课程主页说让我们在这个链接里面找虚拟机镜像,可是这里打不开了

没必要,我用的win10+eclipse+jdk8

AllenWrong avatar Apr 18 '21 14:04 AllenWrong

好的,那请问您是直接下载了他的代码然后自己写的吗,那我是不是在学习自己做的时候应该先把网站上的代码下载下来,然后遇到问题在参照您的来看会更好呢??

MIT的课程网站,lab是相同的。http://db.lcs.mit.edu/6.830/sched.php Github仓库:https://github.com/MIT-DB-Class 建议看18年的指导,21年的也可以,都是一样的。实现的模块不一样多 代码:https://github.com/MIT-DB-Class/simple-db-hw 包括所有的模块

AllenWrong avatar Apr 18 '21 14:04 AllenWrong

请问在实现Join操作的时候是在哪里有Join写的那几种方法的测试效率的??因为那个数据量太小了,不知道作者在实现时是怎么去判断执行效率的?执行后貌似并没有感觉到NLJ,BNLJ,DoubleBlockNestedJoin的执行上从测试时间上看不出差异来?

JackTan25 avatar May 19 '21 06:05 JackTan25

请问在实现Join操作的时候是在哪里有Join写的那几种方法的测试效率的??因为那个数据量太小了,不知道作者在实现时是怎么去判断执行效率的?执行后貌似并没有感觉到NLJ,BNLJ,DoubleBlockNestedJoin的执行上从测试时间上看不出差异来?

这几个方法都是建立在要多次读写磁盘的背景上进行的优化,数据量小的时候数据都在内存中确实没有多大区别,因为磁盘IO才是数据访问中耗时最多的步骤,有关这部分可以看CMU 15-445的 join 部分,除了这几种方法还讲到了sorted join 和 hash join,分析了不同方法的耗时

adiamoe avatar May 19 '21 07:05 adiamoe

a 请问为什么这里在插入之前就把页写入到硬盘了呢(我觉得应该先把tuple写到新page里再写到硬盘)??还有向硬盘写入不应该借助BufferPool吗,这里怎么直接用了呢??

JackTan25 avatar May 21 '21 16:05 JackTan25

这里因为要先创建一个空白页,可以把它直接写入磁盘,因为没有涉及到用户的个人操作,是安全的。而insert是一个用户的修改操作,insert的时候必须要加锁,否则可能会发生数据不一致的情况。BufferPool的主要作用有两个,一是缓存,二是加锁,因此要通过BufferPool调用

------------------ 原始邮件 ------------------ 发件人: "iamxpy/SimpleDB" @.>; 发送时间: 2021年5月22日(星期六) 凌晨0:32 @.>; @.@.>; 主题: Re: [iamxpy/SimpleDB] numPage的大小计算 (#8)

请问为什么这里在插入之前就把页写入到硬盘了呢(我觉得应该先把tuple写到新page里再写到硬盘)??还有向硬盘写入不应该借助BufferPool吗,这里怎么直接用了呢??

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

adiamoe avatar May 21 '21 16:05 adiamoe

建议你在github上提一个新的issue,这样你的问题和我的回答也能让其他人分享到

------------------ 原始邮件 ------------------ 发件人: "iamxpy/SimpleDB" @.>; 发送时间: 2021年5月22日(星期六) 凌晨0:32 @.>; @.@.>; 主题: Re: [iamxpy/SimpleDB] numPage的大小计算 (#8)

请问为什么这里在插入之前就把页写入到硬盘了呢(我觉得应该先把tuple写到新page里再写到硬盘)??还有向硬盘写入不应该借助BufferPool吗,这里怎么直接用了呢??

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

adiamoe avatar May 21 '21 16:05 adiamoe

join之后tuple肯定会变啊,join不就是把两个表连接起来吗…

------------------ 原始邮件 ------------------ 发件人: "iamxpy/SimpleDB" @.>; 发送时间: 2021年5月20日(星期四) 晚上7:13 @.>; @.@.>; 主题: Re: [iamxpy/SimpleDB] numPage的大小计算 (#8)

有个比较困惑的地方,为什么聚合器里面需要设置 //聚合前tuple的行描述 TupleDesc originalTd; //聚合后的tuple的行描述 TupleDesc td; 感觉聚合后类型应该和聚合前应该没有区别呀??应该只要一个就够了吧

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

adiamoe avatar May 21 '21 16:05 adiamoe