DEX: Scalable Range Indexing on Disaggregated Memory——论文泛读

news2024/11/17 23:26:02

arXiv Paper 论文阅读笔记整理

问题

内存优化索引[2,3,18,27,42]对于加速OLTP至关重要,但随着数据大小(以及索引大小)的增长,对内存容量的需求可能会超过单个服务器所能提供的容量。内存分解允许内存优化范围索引(如B+树)扩展到一台机器之外,同时实现高硬件利用率和低成本。然而,由于基本的缓存、无原则的卸载和服务器之间的过度不一致,在分解内存上设计可扩展索引是一项挑战。

挑战

基本的缓存:现有方法大多针对传统的单片DBMS,分解内存使传统缓存机制的某些假设失效。本地和远程存储器之间的速度差距(通过RDMA为~10倍)比存储器和存储器之间的差距(例如,使用SSD为~1000倍)小得多。因此,与缓存维护和同步相关的软件开销变得更加突出。计算服务器不应假设有一定数量的本地内存,如果本地内存受到严重约束,那么不利用树索引属性的通用缓存机制可能无法正常运行。

无原则卸载:卸载利用了内存服务器上有限的计算,减少了RDMA通信。使计算线程只需向内存服务器发送一个索引操作,而不是产生多次往返的单个RDMA操作。但分解内存需要避免在内存服务器上占用有限的计算,明智的决策(即卸载什么、何时卸载以及卸载多少)对于避免过载和保证可扩展性能至关重要。

过度不一致:内存分解带来了处理不同来源的数据不一致的挑战,但现有的基于RDMA的分布式同步锁定成本高昂[49]。如果在计算服务器上实现缓存,就需要确保所有计算端缓存之间的一致性,这种复杂性随着计算服务器的数量而增长。如果同时考虑计算端缓存和内存端卸载,内存服务器会成为数据更改的另一个潜在来源,内存服务器需要确保其树索引视图与所有计算端缓存一致。这种全局一致性需要通过使用锁或一致性消息在整个卸载过程中得到保证。最后,所有包含过时页面的计算端缓存都应该与内存服务器同步。

本文方法

本文提出了一种用于内存分解的可扩展B+树DEX,包括3个技术。

  • 计算端逻辑分区:使用逻辑分区减轻交叉计算一致性开销,每个计算服务器在逻辑上拥有一组密钥范围,而内存服务器仍然存在全局可寻址的共享空间。通过这种方式,不同的计算服务器主要在索引的不相交部分上操作,从而降低了计算服务器之间的缓存一致性和远程内存访问的同步成本。负载平衡和添加/删除计算服务器既简单又轻便,因为逻辑分区只需要调整路由,而无需对数据进行物理重新分区。

  • 轻量级缓存:提出基于随机采样的轻量级缓存替换策略,减少了争用并实现了高可扩展性。为了减少缓存未命中,利用应用程序级别的信息进行路径感知缓存,会在缓存中保留从根节点到较低级别节点的频繁访问的索引路径。除非父节点已被缓存,否则子B+树节点不能被允许进入计算端缓存。类似地,父B+树节点在其所有子节点被逐出之前不会被逐出。这不仅提高了缓存效率(因为离根更近的节点更热),而且能够在计算服务器和内存服务器之间以较低的一致性开销实现更有效的卸载。

  • 机会主义卸载:在运行时跟踪内存服务器上的资源可用性,只有当完成时间可以最小化时,才会卸载索引操作。利用了路径感知缓存的特性,即缓存从根到较低级别节点的连续路径。这有效地防止了树遍历与缓存和卸载交织,从而消除了潜在不一致的来源。

在四服务器RDMA集群上的评估表明,在各种工作负载下,DEX的性能优于最先进的,吞吐量高出1.7–56.3倍。

总结

针对分离式内存环境下的可扩展索引,面临基本的缓存、无原则的卸载和过度不一致的问题。本文提出用于内存分解的可扩展B+树DEX,包括3个技术:(1)计算端逻辑分区:每个计算服务器在逻辑上复制一部分密钥,内存服务器仍然存储全局可寻址的共享空间。(2)轻量级缓存:利用应用程序级别的信息进行路径感知缓存,在缓存中保留从根节点到较低级别节点的频繁访问路径。父节点缓存后允许子节点缓存,父节点在其所有子节点被逐出后再逐出。(3)机会主义卸载:运行时跟踪内存服务器上的资源可用性,当完成时间可以最小化时,才会卸载索引操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1891163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为手机改变休眠时间 不让手机动不动黑屏

在手机中找到设置 并打开 在里面找到显示与亮度 并点开 找到并点击休眠操作项 然后就会弹出 多久进入休眠 可以调久一点

机器学习基础概念

1.机器学习定义 2.机器学习工作流程 (1)数据集 ①一行数据:一个样本 ②一列数据:一个特征 ③目标值(标签值):有些数据集有目标值,有些数据集没有。因此数据类型由特征值目标值构成或…

vmware虚拟机增加磁盘容量

概述 当初始分配给虚拟机的磁盘空间不够时,需要从外部的主系统增加配给。 具体操作分为两步:一:通过虚拟机界面添加分配的磁盘配给;二:将新分配的配给给使用起来。 操作 添加磁盘配给 在虚拟机内部添加新分配的配给…

Linux下QT程序启动失败问题排查方法

文章目录 0.问题背景1.程序启动失败常见原因2.排查依赖库问题2.1 依赖库缺失2.2 依赖库加载路径错误2.3 依赖库版本不匹配2.4 QT插件库缺失2.4.1 QT插件库缺失2.4.2 插件库自身的依赖库缺失 2.5 系统基础C库不匹配 3.资源问题3.1 缺少翻译文件3.2 缺少依赖的资源文件3.3 缺少依…

数据库安装

1.选择最下面自定义安装 2.选择x64 3.next 4.完成后next 5.next 6.选择如图,next 7.如图 8.输入密码 9.如图 10.如图 11.安装 12.完成 13.控制面板选择系统和安全 14.选择系统 15.高级系统设置 16.环境变量 17.双击打开path 18.新建 19.输入MySQLbin文件夹路径 20.管…

年互动量破亿,小红书流量新风口趋势研究

当今时代,一个人生活已经成为越来越常见的状态。千瓜数据显示,近一年小红书有关“一人生活”的种草笔记数超百万,预估互动量达亿级,“一人”市场大有可为。 本期,千瓜将探索“一人生活”的新变化,深入分析人…

Modbus RTU协议简介即CRC算法实现

目录 1 Modbus 介绍2 Modbus RTU协议传输方式2.1 地址码2.2 功能码2.3 数据码2.4 校验码 3 CRC算法实现2.1 代码3.2 运行结果 1 Modbus 介绍 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编…

谷粒商城-个人笔记(集群部署篇一)

前言 ​学习视频:​Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强​学习文档: 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…

每日一题——力扣144. 二叉树的前序遍历(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法: 代码结构 时间复杂度 空间复杂度 总结 我要更强 代码说明 …

mysql 忘记 root 密码的解决办法(针对不同 mysql 版本)

文章目录 1.前提说明1.1 cmd 窗口打开方式1.2 mysql 服务相关命令知识补充1.3 三个 mysql 版本说明1.4 运行时可能发生的报错问题🍀 跳过密码授权命令报错🍀 修改密码时报错🍀 ERROR 2003 (HY000): Cant connect to MySQL server on localhos…

安卓稳定性之crash详解

目录 前言一、Crash 的基本原理二、Crash 分析思路三、实例分析四、预防措施五、参考链接 前言 在开发和测试 Android 应用程序时,遇到应用程序崩溃是很常见的情况。 Android 崩溃指的是应用程序因为异常或错误而无法正常执行,并且导致应用强制关闭。 一…

RabbitMQ 进程内流控(Flow Control) 源码解析

1. 概述 1.1 为什么要流控? 流控主要是为了防止生产者生产消息速度过快,超过 Broker 可以处理的速度。这时需要暂时限制生产者的生产速度,让 Broker 的处理能够跟上生产速度。 Erlang进程之间不共享内存,每个进程都有自己的进程邮…

什么是眼球凹渲染?如何在Varjo Base中设置眼球追踪与凹渲染功能

当谈到Varjo耳机时,它们总是与超高分辨率显示器和有凹渲染联系在一起,从而能够高效地渲染到高像素的显示器上。 本篇博文的主题是分享一些可用于OpenXR应用程序的新设置,但在此之前,让我们先了解关于有凹渲染的一些背景。有凹渲染…

【计算机毕业设计】基于Springboot的B2B平台医疗病历交互系统【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Python爬取国家医保平台公开数据

国家医保服务平台数据爬取python爬虫数据爬取医疗公开数据 定点医疗机构查询定点零售药店查询医保机构查询药品分类与代码查询 等等,数据都能爬 接口地址:/ebus/fuwu/api/nthl/api/CommQuery/queryFixedHospital 签名参数:signData {dat…

H5打包失败:JS堆内存不足

傻子没看懂报错,像个无头苍蝇 解决方式:清空缓存,重启电脑,打包成功。

二叉树中序遍历-递归法详解-数据结构与算法

首先看下中序遍历的代码:(左 跟 右) 其首先要接受一个根结点root作为参数 判断根节点是否为NULL 不为NULL则递归遍历左子树 ①我们把树根结点A传递给它 其左结点为B,右结点为C ②首先我们要检查root是否为NULL 其不为NULL …

使用pyinstaller 如何打包python项目

参考:【python项目正确打包方法-哔哩哔哩】 https://b23.tv/EDB6zbG Pyinstaller 详解多种打包过程(去坑,填坑)。_pyinstaller -f -w-CSDN博客 1.打开命令提示符: 找到python项目所在位置,输入cmd即可 2. 安装pipenv: 在命令提示符&#…

1000T的文件怎么能快速从南京传到北京?最佳方案你肯定想不到

今天刷面试题看到一个有意思的面试题, 1000T的文件怎么能以最快速度从南京传到北京? 网络传输 首先我们考虑通过网络传输,需要多长时间。 我特地咨询了在运营商工作的同学,目前带宽: 家庭宽带下行最大1Gbps&#…

x264 编码器汇编模块介绍

aarch64汇编架构 解释:AArch64 是 ARM 架构的 64 位版本,也称为 ARMv8-A特点: 64位寻址能力,支持更大的地址空间,理论上可达16EB(Exabyte)使用64位宽的寄存器,有31个通用寄存器(X0-X30),外加一个链接寄存器(X31)支持扩展的 NEON SIMD 指令集,提供更多的执行单元和…