leanStore

在这里插入图片描述

可继续看的论文

介绍:规范的缓冲池实现[1]

每次页访问都需要哈希表查找,以便将逻辑页标识符转换为内存中的指针。更糟糕的是,在典型的实现中,所涉及的数据结构使用多个锁存器进行同步,这在现代多核CPU上不能扩展。

相关工作:buffer management[13]

后续工作

Rethinking Logging, Checkpoints, and Recovery for High-Performance Storage Engines/sigmod’20

参考链接

  1. Latch、lock、 pin的区别:https://developer.aliyun.com/article/283485
    • Latch是Oracle提供的轻量级锁,它用于快速,短时间的锁定资源,防止多个并发进程同时修改访问某个共享资源,它只工作在内存中,我们可以不大准确的说,内存中资源的锁叫latch,数据库对象(表,索引等)的锁叫Lock。
    • 比如数据缓存中的某个块要被读取,我们会获得这个块的latch,这个过程叫做pin
  2. pointer swizzling
    • https://blog.listcomp.com/os/2009/12/05/pointer-swizzling
    • 内存中的节点间通过“逻辑”指针(实质是内存地址)连接,而将这些节点保存到磁盘时,“逻辑”指针就没有任何意义了,需要变换一种方式来表示这些节点间的连接关系(这里也不好叫做“物理”指针……),这个变换的过程称为 unswizzling。反过来,将这些节点从磁盘 load 到内存中时的变换就是 swizzling。(节点之间的连接关系)
    • swizzling:磁盘到内存
    • unswizzling:内存到磁盘

思路

  • 第一步冷热数据要分离
  • 索引文件和数据文件可能处理方式不同
  • 多核-锁存问题
  • 对于树状数据结构,防止在其子级之前逐出父级无论如何都是有益的,因为它减少了页面错误。

摘要:

内存数据库:

主要将数据存储在内存中,使用磁盘进行数据恢复和日志记录

磁盘数据库:

大部分数据存储在磁盘,使用内存缓存磁盘内容或作为临时存储

磁盘数据库和内存数据库对比

介绍

使用缓冲池管理:

第一个问题:针对数据库系统管理大数据集

每次页访问都需要hash table lookup,以便将逻辑页标识符转换为内存中的指针。更糟糕的是,在典型的实现中,所涉及的数据结构使用多个锁存器进行同步,这在现代多核CPU上不能扩展。-disk-based DB

[^这个hash table lookup是I/O开销还是in-memory workload]:

传统系统使用缓冲区管理器缓存页面,通过将所有数据存储在固定大小的页面上,可以统一和透明地处理任意数据结构,包括数据库表和索引。最成功之处在于最小化了I/O操作,it incurs a large overhead for in-memory workloads。

第二个问题:同步不能在现代多核CPUs上进行扩展

不使用缓冲池管理:main-memory DB

数据表和索引都是直接存储在主内存中,并使用虚拟内存指针代替页标识符。

重新考虑缓冲区管理器的原因:

第一个问题:data sizes grow,buy more RAM or throe away data is not a viable solution.

可行方案是向外扩展内存数据库,缺点是硬件和管理成本

在主存系统有效管理largerthan-RAM的方法是anti-caching[7] and Siberia[8]。与传统的缓冲区管理器相比,这些方法显示出一个主要弱点:它们不能维护关系数据和索引数据的替换策略。索引可能占总数据大小的很大一部分[11],它们要么必须始终驻留在RAM中,要么需要单独的机制,这使得这些技术不像传统的缓冲区管理器那样通用和不透明。

**第二个问题:**SSD设备的增加,按页访问的块设备

所以引起一个思考就是:能否为现代硬件设计一个有效的buffer manager

设计了一个名为LeanStore的高效存储引擎

  • 提供与传统缓冲区管理器类似的功能抽象,但不会产生开销(in-memory workloads)

  • low overhead

    • accessing an in-memory page 只涉及一个简单的、预测良好的if语句,而不是代价高昂的hash table lookup
  • excellent scalability在现代多核CPUs by avoiding fine-grained latching on the hot path

  • 如果工作集适合RAM,则该设计实现了与最先进的主内存数据库系统相同的性能。同时,缓冲区管理器可以透明地管理后台存储上的非常大的数据集,并且使用现代SSD,当工作集开始超过主内存时,吞吐量会平稳下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值