cmu15445 课程笔记
文章平均质量分 84
苦哈哈小硕
这个作者很懒,什么都没留下…
展开
-
CMU15445 2022笔记(并发、多线程 & 聚集与排序)
1、blocking OS mutex(阻塞式的操作系统锁):不能应对大规模的多线程并发,如果一个线程进来锁住了一个变量,另一个线程会检查这个变量,然后这个线程会直接进入内核态然后进行sleep等待解锁将其唤醒。观察:不管怎么操作第一步就是锁根节点,B+树还支持叶子节点的扫描,但是B+树不支持死锁检测,因此需要自己设定一些规则,比如只支持从小到大的索引。若数据不大,都在内存之中则可以直接用之前数据结构中的排序算法进行,但是若数据很大,则难以将其全部存在内存中去,就需要用到其他的算法。一列K/V进行排序。原创 2024-07-12 16:07:44 · 1021 阅读 · 0 评论 -
CMU15445 2022 笔记(Hash table & B++ Tree)
一个父节点有m个子节点,每个节点有m/2 -1 到 m-1个数据,上层只是一个索引,最终的数据都在最下层,可以通过上层的索引进行查找,节点中也是一堆k/v,其中k是我们要索引的值,v的话分为中间节点(下一层孩子的地址)和叶子节点(行id或行地址)设计哈希表的问题:1、hash 函数,哈希函数速度快则容易碰撞 2、原始静态哈希表不能处理碰撞,小表和大表的权衡,小表意味着更加频繁的碰撞,就需要额外的查找和插入操作。B++树的插入,删除:要找到数据,并观察操作之后的数据,如果太少了就要与其他的数据进行合并;原创 2024-07-11 09:23:23 · 968 阅读 · 0 评论 -
cmu15445 存储引擎 and Buffer Pools
一块数据(元组,索引,日志)hardware page(磁盘中的页,通常4k)OS page(操作系统的页,通常4k)database page(512b-16k),小的数据库做事务性的任务(按行存(插入更新很快,但是如果要扫描一整列则开销很大)的数据更适合事务性,这些行组成一个page),大的数据仓库做分析。而加载的时候则是分批次进行加载,需要哪一块的内容则将哪一块的对应的page加载到memory之中。从磁盘缓存的页的放置策略,全局策略(统一安排缓存的页),本地策略(对每个页都进行不同的安排)原创 2024-07-10 15:03:27 · 1196 阅读 · 0 评论 -
CMU15445 学习复盘
difference:取补集product:取笛卡尔积,把所有的排列都列出来。原创 2024-07-08 15:33:06 · 581 阅读 · 0 评论