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

Joey-Wang

园龄:4年3个月粉丝:17关注: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
228
0
0
Lecture#17 Timestamp Ordering Concurrency Control
摘要:上节课介绍的 2PL 是悲观的并发控制策略,本节课介绍的 Timestamp Ordering (T/O) 则是一个乐观的策略,其乐观表现在事务访问数据时无需显式加锁。 T/O 的核心思想就是利用**时间戳**来决定事务的可串行化执行顺序:**如果 $TS(T_i) 给它一个新时间戳后 restar
225
0
0
Lecture#16 Two-Phase Locking
摘要:上节课介绍了通过 WW、WR、RW conflicts (使用 “交换” 或依赖图) 来判断一个 schedule 是否是可串行化 (serializable) 的方法,但使用该方法的前提是预先知道所有事务的执行流程,这与真实的数据库使用场景并不符合,主要原因在于: 1. 请求连续不断。时时刻刻都有
606
0
1
Lecture#15 Concurrency Control Theory
摘要:回顾本课程的路线图: 在前面的课程中介绍了 DBMS 的主要模块及架构,自底向上依次是 Disk Manager、Buffer Pool Manager、Access Methods、Operator Execution 及 Query Planning。但数据库要解决的问题并不仅仅停留在功能的实现
166
0
0
Lecture#14 Query Planning & Optimization
摘要:SQL是声明性的,这意味着用户告诉 DBMS 他们想要什么答案,而不是如何得到答案。因此,DBMS 需要将 SQL 语句转换为可执行的查询计划。 但不同的查询计划的效率可能出现多个数量级的差别,如 Join Algorithms 一节中的 Simple Nested Loop Join 与 Hash
295
0
0
Lecture#13 Query Processing2
摘要:我们在 Lec12 中已经讨论了怎么将 operators 组织为一个 query plan。当时我们是假设 query 是由一个 worker (是 DBMS 的组件,负责代表客户机执行任务并返回结果,可能是一个线程或进程) 执行。然而在实践中,**query 往往是由多个 workers 并发执
68
0
0
Lecture#12 Query Processing1
摘要:## 1 Query Plan 通常一个 SQL 语句会被组织成如图的树状查询计划,数据从叶节点流到根节点,查询结果在根节点中得出。 通常,树上的操作符 operators 是二元的 (1~2个子运算符)。 而本节将讨论在这样一个计划中,如何为这个数据流动过程建模,大纲如下: - Processin
106
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:算子组织成树形结构,数据从叶子节点流向根节点,根节点的输
56
0
0
Lecture#09 Index Concurrency Control
摘要:review: 上几节讲了 hash table、B+Tree、Radix Tree 及其他树形结构。我们假设这些数据结构只能被一个线程访问,且在同一时间只有一个线程能对该数据结构进行读写数据。 然而大部分DBMS在实际场景中需要允许多线程安全地访问数据结构,以充分利用CPU多核以及隐藏磁盘I/O延
117
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 执
600
0
0
Project #2 - B+Tree (下)
摘要:本篇中完成 Project 2 的 Task 4,实现 B+Tree 的并发部分,我们要基于 Latch Crabing 策略将之前实现的单线程 B+Tree 变为多线程。 理论部分 课件 Lecture #09: Index Concurrency Control 中详细讲解了并发控制的基本算法和
526
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
Project #1 - Buffer Pool
摘要:## Overview >[Lecture#05 Buffer Pool](https://www.cnblogs.com/angelia-wang/p/16915995.html) > >[Lecture#06 HashTables](https://www.cnblogs.com/angelia
267
0
0
Project #1 - Buffer Pool 项目要求
摘要:https://15445.courses.cs.cmu.edu/fall2022/project1/ OVERVIEW 在本学期中,你将为 BusTub DBMS 构建一个新的 disk-oriented storage manager。这种 storage manager 假定数据库的主存储位置
303
0
0
# Project #0 - C++ Primer
摘要:https://15445.courses.cs.cmu.edu/fall2022/project0/ bustub 项目用 C++ 17 编写,但 C++ 11 已经够用。 C++ 相关教程: short tutorial cppreference A Tour of C++ and Effect
387
0
0
bustub 前情提要(编译测试)
摘要:此处完成的是 CMU15-445 Fall2022 的 bustub 项目。 创建 Private Repo 在 github “create a new repository” 页面中直接创建一个private仓库,如 bustub-private。 # 1. 在本地创建一个原仓库的 bare c
531
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开