Mr Dk.

Results 159 comments of Mr Dk.

# 1. Introduction 在大数据处理的场景中,查询优化变得至关重要。原有的优化器对大数据的处理捉襟见肘。本文提出 orca 优化器专门为分析型任务设计,在以下几点上与其它优化器有所不同: 1. 模块化:使用了高度可扩展的抽象元数据描述,不再像传统优化器一样是 DBMS 内核的一部分;相反,orca 可以被快速移植到其它 DBMS 中 2. 扩展性:? 3. 多核心:内部使用高效的多核心调度器,在多个 CPU core 上调度独立的优化子任务 4. 可验证:内置正确性验证和性能验证机制,优化器可以作为一个模块被独立测试,提高工程体验 5. 性能:能使查询性能提升十倍至一千倍 [这篇文章](https://www.infoq.cn/article/5o16eHOZ5zk6FzPSJpT2) 是论文作者之一写的,精要介绍了整篇论文的内容。

# 2. Preliminaries ## 2.1 Massively Parallel Processing *Pivotal* 的 *Greenplum* 数据库是一个大规模并行处理 (MPP) 分析型数据库,采用 share-nothing 架构,每个节点有着自己的内存、操作系统和磁盘。存储和数据处理将被分布到多个独立的数据库上,它们共同工作,对外表现为一个单体数据库。Master 节点是 GPDB 的入口,客户端连接到 master 节点并提交 SQL,master 将 SQL 优化并拆分为较小的任务,分发并协同多个 segment 共同完成数据处理和存储。Master 和 segment 通过网络互联。...

# 3. Orca Architecture Orca 是一个基于级联优化框架的现代化优化器。与其它级联优化器和相应 DBMS 紧耦合不同,orca 可以运行与数据库系统之外,作为一个独立的优化器: 1. 这对不同的计算框架 (MPP/Hadoop) 来说非常重要,因为只需要一个优化器就够了 2. 这意味着可以将传统的关系型优化应用到新的查询框架中,如 Hadoop 3. 能够独立运行优化器意味着不用运行数据库就可以进行测试 ## DXL 优化器与 DBMS 解耦意味着两者之间需要有信息交互的格式。Orca 提出 *Data eXchange Language*,使用 XML 格式对输入的查询、输出的查询计划、以及优化中需要用到的 DBMS...

# 5. Metadata Exchange 优化器内的每个会话在访问 metadata cache 时,由独立的 MD Accessor 服务。如果缓存缺失所需的信息,MD Accessor 负责透明地从外部的 MD Provider 向 DBMS 获取数据。在优化过程中,内存中的 metadata cache 会被 pin 住,并在优化结束后被 unpin。 ![image](https://user-images.githubusercontent.com/32560442/126022746-7a7a6dbf-4d0f-4389-8f37-45366a3c187d.png) 另外,Orca 实现了一个基于文件的 MD Provider,可以从 DXL...

# 6. Verifiability ## 6.1 Minimal Repros *AMPERe* 是一款自动抓取最小化重现信息的工具。其动机是为了在不能访问客户生产环境系统的前提下,重现、调试客户的问题。一次 AMPERe dump 将会在意料之外的错误抛出时自动触发,或者在产生次优查询计划时按需触发。AMPERe dump 包含重现问题的最少信息: - 输入查询 - 优化器配置 - Metadata 上述信息被序列化为 DXL 格式。如果 dump 是因为异常,那么还将包含堆栈信息。 AMPERe 使得可以在 DBMS 之外重放一个优化器 session。任何...

# 1. Introduction 数据量增长的维度: 1. 额外数据源 2. 更长的数据保留时间 数据仓库的一个很重要的维度是 **计算能力**,因此数仓解决方案把扩展视为一等公民。本文讨论的基于 GreenPlum 的 MPP 数仓使用 shared-nothing 架构,由没有中心化瓶颈或对特殊硬件依赖的普通机器组成。这种架构下,扩展最大的挑战在于: 1. 基本没有下线时间 2. 可管理性和性能透明性

# 2. Desideata 成功的扩展策略需要满足以下要求: 1. 容量扩展性:扩容后的容量 == 系统本身被实现为这么多容量的容量 (有点绕..) 2. 性能扩展性:扩容后的性能 == 系统本身被实现为这么多容量的性能 3. 不中断服务,下线时间与系统扩容前后的大小无关 4. 扩容期间容错 5. 副本与灾备在扩容期间继续有效 6. 过程透明化 7. 过程可控制:暂停/继续的能力 / 优先对部分数据扩容 8. 支持数仓的数据特性:事实表会被经常扩展,并且基本是分区存放 9. 利用已有的基础设施,降低复杂性

# 3. Architecture Overview GPDB 是一个 shared-nothing 的 MPP 架构,构建在普通硬件之上。这样带来不同 OS 上的移植性,也带来对于硬件配置的低敏感性。 ## 3.1 Basic 系统包含两种类型的 host: - Master host:接收连接、优化、分发并行查询计划、收集结果返回客户端 - Segment host 系统中的 segment 被分类两种类型: - Primaries - Mirrors:primaries...

# 4. Expansion 扩展整体方法:在系统中初始化一个空的 segment,随着时间逐渐重分布少量数据,直到所有数据都被重新分布。重分布过程对正在进行的查询的影响有限,并且是在后台发生。完整的过程被 *gpexpand* 工具借助 GPDB API 实现。三个主要阶段: 1. 初始化:新 segment 被物理地加入 2. 重分布:用户可配置优先级、监控、随着暂停/继续,同时不影响常规 workloads 3. 结束:用于调度和优先级分配的临时表被移除 ## 4.1 Provisioning and Initialization - Provisioning:对新机器进行与已有系统类似的压力测试 - Initialization:安装数据库软件、初始化新的 segment host...