曾经沧海难为水,除却巫山不是云。|

Joey-Wang

园龄:4年2个月粉丝:17关注:0

04 2023 档案

C++ 多线程并发
摘要:1 创建线程 C++11 之前原生不支持多线程,C++11起逐步引入了对线程的支持。 std::thread 在 <thread> 头文件中声明,因此使用 std::thread 时需要包含 <thread> 头文件。 #include <iostream> #include <thread> vo
295
0
0
BusTub 通关总结
摘要:Project #0 - C++ Primer 是个前期热身项目,考察对 C++ 的掌握。 要求实现一个并发 Trie 支持的 kv 存储,存储 map 到任何类型的 value 的 string key。Trie 中的每个节点存储一个键的单个字符,并且可以有多个子节点,这些子节点表示不同的可能的下
769
0
0
Project #4 - Concurrency Control (Leaderboard Task)
摘要:## Predicate pushdown to SeqScan 将 SeqScan 算子上层的 Filter 算子结合进 SeqScan 里,这样仅需锁住符合 Predicate 的行。 更改 SeqScanExecutor 的 `Next()` 函数: ```c++ auto SeqScanEx
95
0
0
Project #4 - Concurrency Control
该文被密码保护。
15
0
0
Project #4 - Concurrency Control 项目要求
摘要:https://15445.courses.cs.cmu.edu/fall2022/project4/ OVERVIEW 这个项目是关于在 BusTub 中增加对事务的支持!为了实现这个目标,你将在你的数据库系统中添加一个 Lock Manager,然后用它来支持并发查询的执行。Lock Manag
211
0
0
Lecture#20 Database Crash Recovery
摘要:上节课介绍到,故障恢复算法由两个部分构成: - 在事务执行过程中采取的行动来确保出现故障时能够恢复 (上节课) - 在故障发生后的恢复机制,确保原子性、一致性和持久性 (本节课) ## 1 ARIES 本节课介绍的是 Algorithms for Recovery and Isolation Exp
376
0
0
Lecture#19 Logging Schemes
摘要:数据库在运行时可能遭遇各种故障,这时可能同时有许多正在运行的事务,如果这些事务执行到一半时故障发生了,就可能导致数据库中的数据出现不一致的现象: 这时就需要故障恢复机制来保证数据库的原子性、一致性、持久性。故障恢复机制包含两部分: 在事务执行过程中采取的行动来确保在出现故障时能够恢复 (本节课) 在
83
0
0
Lecture#18 Multi-Version Concurrency Control
摘要:> MVCC 不是并发控制的 (继 2PL、时间戳控制协议) 第三种实现,它不单独作为一种并发控制的实现,而是与 2PL / 时间戳控制协议 (T/O、OCC) 结合使用。 多版本并发控制 (MVCC) 首次被提出是在 1978 年的一篇 MIT 的博士[论文](https://web.archiv
224
0
0
Lecture#17 Timestamp Ordering Concurrency Control
摘要:上节课介绍的 2PL 是悲观的并发控制策略,本节课介绍的 Timestamp Ordering (T/O) 则是一个乐观的策略,其乐观表现在事务访问数据时无需显式加锁。 T/O 的核心思想就是利用**时间戳**来决定事务的可串行化执行顺序:**如果 $TS(T_i) 给它一个新时间戳后 restar
221
0
0
Lecture#16 Two-Phase Locking
摘要:上节课介绍了通过 WW、WR、RW conflicts (使用 “交换” 或依赖图) 来判断一个 schedule 是否是可串行化 (serializable) 的方法,但使用该方法的前提是预先知道所有事务的执行流程,这与真实的数据库使用场景并不符合,主要原因在于: 1. 请求连续不断。时时刻刻都有
601
0
1
Lecture#15 Concurrency Control Theory
摘要:回顾本课程的路线图: 在前面的课程中介绍了 DBMS 的主要模块及架构,自底向上依次是 Disk Manager、Buffer Pool Manager、Access Methods、Operator Execution 及 Query Planning。但数据库要解决的问题并不仅仅停留在功能的实现
162
0
0
Lecture#14 Query Planning & Optimization
摘要:SQL是声明性的,这意味着用户告诉 DBMS 他们想要什么答案,而不是如何得到答案。因此,DBMS 需要将 SQL 语句转换为可执行的查询计划。 但不同的查询计划的效率可能出现多个数量级的差别,如 Join Algorithms 一节中的 Simple Nested Loop Join 与 Hash
289
0
0
Lecture#13 Query Processing2
摘要:我们在 Lec12 中已经讨论了怎么将 operators 组织为一个 query plan。当时我们是假设 query 是由一个 worker (是 DBMS 的组件,负责代表客户机执行任务并返回结果,可能是一个线程或进程) 执行。然而在实践中,**query 往往是由多个 workers 并发执
67
0
0
Lecture#12 Query Processing1
摘要:## 1 Query Plan 通常一个 SQL 语句会被组织成如图的树状查询计划,数据从叶节点流到根节点,查询结果在根节点中得出。 通常,树上的操作符 operators 是二元的 (1~2个子运算符)。 而本节将讨论在这样一个计划中,如何为这个数据流动过程建模,大纲如下: - Processin
104
0
0
Project #3 - Query Execution
该文被密码保护。
8
0
0
Lecture#11 Joins Algorithms
摘要:## 1 Joins 在关系型数据库中,我们常常通过规范化 (Normalization) 设计避免信息冗余;因此查询时,就需要通过 Join 将不同 table 中的数据合并来重建数据。 本课关注双表的**内等值**连接。原则上我们希望,连接时将小表放到左侧 (作为外表)。 首先要讨论的是:Joi
70
0
0
Lecture#10 Sorting & Aggregation Algorithms
摘要:接下来将学习使用我们现在学习的 DBMS 组件来执行查询。 我们今天要讨论的算法都是基于 Disk 的,即查询的中间结果也需要存储到磁盘中。我们需要使用 Buffer Pool 去实现这些算法,要最大化磁盘连续 I/O。 Query Plan:算子组织成树形结构,数据从叶子节点流向根节点,根节点的输
55
0
0
Lecture#09 Index Concurrency Control
摘要:review: 上几节讲了 hash table、B+Tree、Radix Tree 及其他树形结构。我们假设这些数据结构只能被一个线程访问,且在同一时间只有一个线程能对该数据结构进行读写数据。 然而大部分DBMS在实际场景中需要允许多线程安全地访问数据结构,以充分利用CPU多核以及隐藏磁盘I/O延
113
0
0
Project #3 - Query Execution 项目要求
摘要:https://15445.courses.cs.cmu.edu/fall2022/project3/ Project #1 中我们实现了一个 buffer pool manager。Project #2 中我们实现了一个 B+Tree 索引。在此次 Project,你将实现一个让 BusTub 执
598
0
0
Project #2 - B+Tree (下)
摘要:本篇中完成 Project 2 的 Task 4,实现 B+Tree 的并发部分,我们要基于 Latch Crabing 策略将之前实现的单线程 B+Tree 变为多线程。 理论部分 课件 Lecture #09: Index Concurrency Control 中详细讲解了并发控制的基本算法和
525
0
1
Project #2 - B+Tree (上)
该文被密码保护。
5
0
0
Project #2 - B+Tree 项目要求
摘要:https://15445.courses.cs.cmu.edu/fall2022/project2/ CHECKPOINT #1 Task #1 - B+Tree Pages 实现三个 page class 来存储 B+Tree 的数据。 B+Tree Parent Page src/includ
209
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开