Project 4 - Concurrency Control TASK #1 - LOCK MANAGER TASK #2 - DEADLOCK PREVENTION TASK #3 - CONCURRENT QUERY EXECUTION 末言 前言 这篇文章的的 Lab1-Lab3 部分是在入学前的暑假写的(去年),当时导师随手发了一个15445的链接就让学,知乎一搜才知道完犊子了,我怎么现在才知道这些课... 做的过程中...
在lab4中实现一个基于 2PL 的并发控制方式,自动为并发事务执行加锁解锁,提供可串行化能力并实现可重复读、读已提交、读未提交三种隔离度。 Lock Manager 基本概念 lock manager 为每个资源(表/行)维护一个请求队列,这个队列根据请求的顺序排序。队列记录了每一个请求的事务、锁级别、是否授予等。lock manager 用...
面对课程的复杂性和深度,我感到有些措手不及,特别是对Lab1-Lab3的理解较为浅薄。在知乎上找到了胡神的文章,加入了他的15445交流群,一边参考大佬们的刷题文档,一边在群内交流学习,最终完成了Lab3。在第一学期末,我投入到研究生工作中,Lab4的进度因此被搁置。直到近期加入胡神15721群,为了通...
具体代码如下: 复制Page *BufferPoolManager::FetchPageImpl(page_id_tpage_id){lock_guard<mutex>lock(latch_);// 1. Search the page table for the requested page (P).Page *page;autoit = page_table_.find(page_id);// 1.1 If P exists, pin it and return it immediately.if(it != page_tabl...
Task4 实现一个功能,将字符串表达式进行大小写转换。lab1 完成LRU-K淘汰规则的页缓冲池。Task1 理解LRU-K概念,确定需维护的变量和实现的函数。Task2 实现缓冲池管理,包括页加载、页换出、页框复用等流程,使操作对用户透明。Task3 对页加读写锁,实现Page类的rwlatch_,并设计BasicPageGuard、Read...
lab4: 并发事务管理,保证多个事务在数据库并发执行时的隔离性。实现基于2PL的事务并发控制,支持Repeatable Read、Read Commited、Read UnCommited三种隔离度。因为 2PL 不可避免产生死锁,还要实现一个 后台死锁检测、解除线程。 相比往年的lab,p3比2021多一个查询优化,p4较往年多了意向锁。接下来准备写一个详细的...
事务是数据库执行的最小单元,并发控制为事务并发提供可串行化的能力和隔离性。 可串行化:多个事务并发执行时,能找到一个顺序,使多个事务好像在串行执行。 隔离性:不同事务对外界的暴露程度。 在lab4中实现一个… 阅读全文 CMU 15445-2022 P3 Query Optimize ...
lab4没有满分,就先不写了 lab0 这个实验主要是对C++11以后的特性进行学习,同时带领入门调试,数据库计算函数添加等 Task1 这个项目是写一个COW前缀树,前缀树不复杂,主要是对智能指针,所有权等概念进行理解 这一个任务只需要实现trie.cpp中的Get | Put | Remove 三个算法 ...
2023 spring CMU15445 lab0-lab3要点 高国彬 润! 高国彬: 前言 不上班一个月了,真好啊~ 15445是离职前做的,因为想着以后可能不再从事数据库相关方面了,所以这里还是打算在没有全部忘记之前写下 lab4没有满分,就先不写了 lab0 这个实验主要是对C++1…阅读全文 赞同108 57 条评论 分享...
4 条评论 分享 收藏 cmu15-445 2023fall lab0 通关记录 lovelive lovelive:前置知识:智能指针 + 一点点多线程 + Modern c++比较基础的东西?std::shared_ptr: 当没有shared_ptr指向这块地址的时候,这块地址会被自动释放掉。… 阅读全文 ...