10天读完levelDB day3 操作数据库的流程
新建/打开流程步骤:
1.新建一个空的db对象,并给它上锁2.从文件信息恢复数据库,具体包括:1.从current文件找出manifest2.从manifest中把当前version元信息给读出来3.把当前version放在versionSet的链表中3.然后从log中恢复内存4.删除没用的文件
写入流程
1.写入是一个阻塞式的过程,不写入成功(或失败)则不返回。2.首先确认空间是否足够,可以直接写入内存吗,后台合并线程是否还在忙?3.如果空间足够,且在这个写操作之前,没有其他写操作,则开始写入memtable4.写完唤醒条件变量上的其他线程,继续执行。
读流程
1.首先给当前version和内存表增加引用计数,防止被垃圾回收2.然后去内存中活跃的memtable中找,如果找不到,去不活跃的memtable中找,最后去当前版本文件中找3.找到之后,总结一下在哪里找到了,然后判断找的过程中有没有冷数据,冷数据要下推4.引用计数减少。
文章转载自当代孔乙己,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




