CMU15445-lecture12 第十二课:查询处理I1 查询计划DBMS将一个SQL语句转换成一个查询计划。查询计划中的操作被整理成一个树。数据从这颗树的叶子流向树根。树的根节点的输出是查询的结果。通常情况下,运算符都是二进制的(1-2 个子运算符)。同一个查询计划可以用多种方式执行。 2 处理模型DBMS 处理模型定义了系统如何执行查询计划。它指定了诸如查询计划的评估方向以及沿途运算符之间传递的数据类型等内容。存在不同的处理模 2024-11-21 cmu15445 #查询优化 #查询处理 #执行模型 #迭代器模型
CMU15445-lecture10 第十课:排序和聚合算法1 排序DBMS 需要对数据进行排序,因为表中的元组在关系模型下没有特定的顺序。排序(可能)用于 ORDER BY、GROUP BY、JOIN 和 DISTINCT 运算符。如果需要排序的数据适合内存,那么 DBMS 可以使用标准排序算法(例如,快速排序)。如果数据不适合,那么 DBMS 需要使用外部排序,该排序可以根据需要溢出到磁盘,并且优先选择顺序 I/O 而不是随机 I 2024-11-19 cmu15445 #DBMS #元组聚合 #元组排序算法
LSM-Tree The Log-Structured Merge-Tree(LSM-Tree)摘要高性能事务系统应用程序通常会在历史记录表中插入行,以提供活动跟踪,同时这个事务系统会产生日志记录用作系统恢复。两种类型的生成信息都可以从高效索引中受益。一个众所周知的例子是 TPC-A 基准应用程序,它经过修改以支持对特定帐户的帐户活动历史记录进行有效查询。这需要在快速增长的历史记录表上按帐户 ID 建立索引。遗憾 2024-11-19 misc #存储结构 #数据库
Paxos Made Simple Paxos Made Simple摘要 Paxos 算法用简单的英语表达时非常简单。 1 简介用于实现容错分布式系统的 Paxos 算法一直被认为难以理解,可能是因为许多读者最初看的是希腊语。事实上,它是最简单、最明显的分布式算法之一。其核心是共识算法——“synod”算法。下一节将展示这种共识算法几乎不可避免地遵循我们希望它满足的属性。最后一部分将解释完整的Paxos算法。这个算法是通过将共 2024-10-09 mit6.824 #分布式系统 #mit6.824
CMU15445-lecture9 第九课:索引并发控制1 索引并发控制到目前为止,我们假设我们讨论的数据结构是单线程的。然而,大多数 DBMS 需要允许多个线程安全地访问数据结构,以利用额外的 CPU 核心并隐藏磁盘 I/O 停顿。 有些系统使用单线程模型。将单线程数据结构转换为多线程数据结构的一种简单方法是使用读写锁,但效率不高。 并发控制协议是 DBMS 用于确保共享对象上的并发操作得到“正确”结果的方法。 协议的正确性标准可 2024-07-18 cmu15445 #哈希表 #并发控制 #索引结构 #锁 (Locks) #闩锁 (Latches) #自旋锁 (Spin Locks) #B+树
why kafka so fast? Kafka为什么这么快?kafka是一个成熟的消息队列,一直以性能高著称,它之所以能够实现高吞吐量和低延迟,主要是由于以下几个方面的优化。 消息发送 批量发送:Kafka通过将多个消息打包成一个批次,减少了网络传输和磁盘写入的次数,从而提高了消息的吞吐量和传输效率。 异步发送:生产者可以异步发送消息,不必等待每个消息的确认,这大大提高了消息发送的效率。 消息压缩:支持对消息进行压缩,减少网络传输的 2024-07-16 mq #高性能 #批量发送 #异步发送 #消息压缩 #并行发送 #零拷贝技术 #磁盘顺序写入 #页缓存 #稀疏索引 #分区和副本 #消费者群组 #并行消费 #批量拉取
茶7.15-7.19 Tea7.15-7.19MonClosest Cities_161C 输入 T(≤1e4) 表示 T 组数据。所有数据的 n 之和 ≤1e5,m 之和 ≤1e5。每组数据输入 n(2≤n≤1e5) 和长为 n 的严格递增数组 a(0≤a[i]≤1e9)。然后输入 m(1≤m≤1e5) 和 m 个询问,每个询问输入两个数 x 和 y,范围 [1,n] 且 x≠y。 数轴上有 n 个点,点 i 的坐标 2024-07-15 codeforces #数据结构 #图论 #贪心算法 #二分查找 #DFS(深度优先搜索) #树形DP #并查集 #最短路径 #动态规划 #分治法
why using mq? 为什么要使用消息队列?使用消息队列的主要目的主要记住这几个关键词:解耦 、异步、削峰填谷 解耦:在一个复杂的系统中,不同的模块或服务之间可能需要相互依赖,如果直接函数调用或者API调用的方式,会造成模块之间的耦合,当其中一个模块发生改变时,需要同时修改调用方和被调用方的代码。而使用消息队列作为中间件,不同的模块可以将消息发送到消息队列中,不需要知道具体的接收方是谁,接收方可以独立地消费消息,实现了 2024-07-15 mq #解耦 #异步 #削峰填谷 #高可用性 #高吞吐量 #负载均衡 #消息持久化 #事务消息
茶7.8-7.12 茶7.8-7.12MonFind the Different Ones!_923D 输入 T(≤1e4) 表示 T 组数据。所有数据的 n 之和 ≤2e5,q 之和 ≤2e5。每组数据输入 n(2≤n≤2e5) 和长为 n 的数组 a(1≤a[i]≤1e6),下标从 1 开始。然后输入 q(1≤q≤2e5) 和 q 个询问,每个询问输入两个数 L R(1≤L<R≤n)。 对于每个询问,输出在 2024-07-08 codeforces #数据结构 #图论 #广度优先搜索(BFS) #环检测 #模运算
CMU15445-lecture8 第八课:树索引1 表索引数据库系统内部可以使用多种不同的数据结构,例如内部元数据、核心数据存储、临时数据结构或表索引。对于可能设计范围扫描查询的表索引,哈希表可能不是最佳选择,因为它本质上是无序的。 表索引是表列子集的副本,它被组织和/或排序以便使用这些属性的子集进行有效访问。因此,DBMS可以对表索引执行查找,以更快地找到某些元组,而不是执行顺序扫描。DBMS确保表和索引的内容始终在逻辑上同步。 2024-07-04 cmu15445 #B+树 #表索引 #插入 #删除 #选型条件 #复制键 #聚集索引 #堆聚类