2025云栖大会,开启通往AGI的未来之旅 了解详情
写点什么

Amazon Aurora 并行查询

  • 2019-10-17
  • 本文字数:3234 字

    阅读完需:约 11 分钟

Amazon Aurora 并行查询

Amazon Aurora 是一种旨在全面发挥云中联网、处理和存储资源丰富的优势的关系数据库。Aurora 在用户可见层面保持了与 MySQL 和 PostgreSQL 的兼容,同时又在底层使用先进的特制分布式存储系统。您的数据跨三个不同的 AWS 可用区分布在数百个存储节点上,每个可用区两个副本,存储节点采用高速 SSD 存储设备。以下是这一结构的原理图(摘取自 Amazon Aurora 入门):



新增并行查询功能


在我们推出 Aurora 时,我们在计划中还按时要采用与数据库堆栈的其他层相同的扩展设计原则。今天,我想向大家介绍以下我们在该道路上的下一步计划。


在上图所描绘的存储层中,每个节点还包含大量的处理能力。现在,Aurora 能够提取您的分析查询(通常为处理一张大表中全部或相当大一部分内容的查询),然后跨数百个甚至数千个存储节点并行运行这些查询,充分利用这一处理能力,将速度提高两个量级。由于这种新模式减少了对网络、CPU 和缓冲池资源的争夺,您可以在一张表同时混合运行分析查询和事务查询,同时保持这两类查询的高吞吐量。


实例类别决定了在给定时间可以激活的并行查询数量:


  • db.r.large* – 1 个并发并行查询会话

  • db.r.xlarge* – 2 个并发并行查询会话

  • db.r.2xlarge* – 4 个并发并行查询会话

  • db.r.4xlarge* – 8 个并发并行查询会话

  • db.r.8xlarge* – 16 个并发并行查询会话

  • db.r4.16xlarge – 16 个并发并行查询会话


您可以使用 aurora_pq 参数来启用和禁用全局和会话级别的并行查询。


并行查询可增长超过 200 种单表断言和哈希连接的性能。Aurora 查询优化器会根据表的大小和内存中已有的表数据量自动决定是否使用并行查询功能;您还可以使用 aurora_pq_force 会话变量来覆盖优化器以满足测试的需要。


并行查询的操作


您需要创建一个新的集群才能使用并行查询功能。您可以全新创建,也可以通过还原快照的方式创建。


为了创建一个支持并行查询的集群,我只需将 Provisioned with Aurora parallel query enabled 选择为 Capacity type



我使用 CLI 还原了一个 100 GB 的快照进行测试,然后探索来自 TPC-H 基准测试的一条查询。基本查询如下:


SQL


SELECT  l_orderkey,  SUM(l_extendedprice * (1-l_discount)) AS revenue,  o_orderdate,  o_shippriority
FROM customer, orders, lineitem
WHERE c_mktsegment='AUTOMOBILE' AND c_custkey = o_custkey AND l_orderkey = o_orderkey AND o_orderdate < date '1995-03-13' AND l_shipdate > date '1995-03-13'
GROUP BY l_orderkey, o_orderdate, o_shippriority
ORDER BY revenue DESC, o_orderdate LIMIT 15;
复制代码


EXPLAIN 命令会显示查询方案,包括并行查询的使用:


SQL


+----+-------------+----------+------+-------------------------------+------+---------+------+-----------+--------------------------------------------------------------------------------------------------------------------------------+| id | select_type | table    | type | possible_keys                 | key  | key_len | ref  | rows      | Extra                                                                                                                          |+----+-------------+----------+------+-------------------------------+------+---------+------+-----------+--------------------------------------------------------------------------------------------------------------------------------+|  1 | SIMPLE      | customer | ALL  | PRIMARY                       | NULL | NULL    | NULL |  14354602 | Using where; Using temporary; Using filesort                                                                                   ||  1 | SIMPLE      | orders   | ALL  | PRIMARY,o_custkey,o_orderdate | NULL | NULL    | NULL | 154545408 | Using where; Using join buffer (Hash Join Outer table orders); Using parallel query (4 columns, 1 filters, 1 exprs; 0 extra)   ||  1 | SIMPLE      | lineitem | ALL  | PRIMARY,l_shipdate            | NULL | NULL    | NULL | 606119300 | Using where; Using join buffer (Hash Join Outer table lineitem); Using parallel query (4 columns, 1 filters, 1 exprs; 0 extra) |+----+-------------+----------+------+-------------------------------+------+---------+------+-----------+--------------------------------------------------------------------------------------------------------------------------------+3 rows in set (0.01 sec)
复制代码


Extras 列的相关部分如下:


SQL


Using parallel query (4 columns, 1 filters, 1 exprs; 0 extra)
复制代码


使用并行查询时,查询运行的时间不到 2 分钟:``


SQL


+------------+-------------+-------------+----------------+| l_orderkey | revenue     | o_orderdate | o_shippriority |+------------+-------------+-------------+----------------+|   92511430 | 514726.4896 | 1995-03-06  |              0 ||  593851010 | 475390.6058 | 1994-12-21  |              0 ||  188390981 | 458617.4703 | 1995-03-11  |              0 ||  241099140 | 457910.6038 | 1995-03-12  |              0 ||  520521156 | 457157.6905 | 1995-03-07  |              0 ||  160196293 | 456996.1155 | 1995-02-13  |              0 ||  324814597 | 456802.9011 | 1995-03-12  |              0 ||   81011334 | 455300.0146 | 1995-03-07  |              0 ||   88281862 | 454961.1142 | 1995-03-03  |              0 ||   28840519 | 454748.2485 | 1995-03-08  |              0 ||  113920609 | 453897.2223 | 1995-02-06  |              0 ||  377389669 | 453438.2989 | 1995-03-07  |              0 ||  367200517 | 453067.7130 | 1995-02-26  |              0 ||  232404000 | 452010.6506 | 1995-03-08  |              0 ||   16384100 | 450935.1906 | 1995-03-02  |              0 |+------------+-------------+-------------+----------------+15 rows in set (1 min 53.36 sec)
复制代码


我可以禁用会话的并行查询(我可以使用 RDS 自定义集群参数组以使其长期生效):


SQL


set SESSION aurora_pq=OFF;
复制代码


禁用并行查询后查询的运行速度会显著下降:


SQL


+------------+-------------+-------------+----------------+| l_orderkey | o_orderdate | revenue     | o_shippriority |+------------+-------------+-------------+----------------+|   92511430 | 1995-03-06  | 514726.4896 |              0 |...|   16384100 | 1995-03-02  | 450935.1906 |              0 |+------------+-------------+-------------+----------------+15 rows in set (1 hour 25 min 51.89 sec)
复制代码


这是在一个 db.r4.2xlarge 实例上运行的结果;其他实例型号、数据集、访问模式和查询的性能都会不同。此外,我还可以覆盖查询优化器,坚持使用并行查询进行测试:


SQL


set SESSION aurora_pq_force=ON;
复制代码


注意事项


在开始探索 Amazon Aurora 并行查询时需要注意以下几个方面:


引擎支持 — 我们正在推出对 MySQL 5.6 的支持,并在研究对 MySQL 5.7 和 PostgreSQL 的支持。


表格式 — 表的行格式必须为 COMPACT;不支持分区表。


数据类型 — 不支持 TEXT、BLOB 和 GEOMETRY 数据类型。


DDL — 表不能有任何待处理的快速在线 DDL 操作。


费用 — 您使用并行查询功能不会发生任何额外的费用。但由于它会直接访问存储,因此您的 IO 费用可能会上升。


立即尝试


这项新功能现已推出,您可以立即开始使用!


作者介绍:


Jeff Barr


AWS 首席布道师; 2004年开始发布博客,此后便笔耕不辍。
复制代码


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-parallel-query-for-amazon-aurora/


2019-10-17 09:00913
用户头像

发布了 1929 篇内容, 共 156.4 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

填问卷抽大奖,中奖绝缘体的跨年福利快来领取!

InfoQ写作社区官方

热门活动

基于磁盘量身定制,十亿规模高效向量检索方案

Zilliz

向量检索 anns 向量计算

使用亚马逊云科技DevOps 工具构建 InnerSource 生态系统

亚马逊云科技 (Amazon Web Services)

开源 InnerSource

QCon-oCPX多目标多场景联合建模在OPPO的实践

安第斯智能云

算法

前端React 开发中必须知道的5个技巧

@零度

前端开发 React

通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

汪子熙

Kubernetes k8s 28天写作 docker build 12月日更

【2021废钢铁大会】拾起卖旗下天津城矿再生资源回收有限公司三获“全国优质废钢加工配送企业”称号

InfoQ 天津

平凯星辰获评 《金融电子化》2021 金融业新技术应用创新突出贡献奖

PingCAP

固定资产管理平台系统解决方案

低代码小观

企业管理 资产管理 CRM 企业管理系统 CRM系统

Linux之atime,ctime,mtime的区别

入门小站

Linux

28天写作感想

Tiger

28天写作

梦想起航

向往

盘点2021

2021 优秀开源项目公布,Apache APISIX 位列其中!

API7.ai 技术团队

api 网关 Apache APISIX 优秀开源项目

HDFS源码解析:教你用HDFS客户端写数据

华为云开发者联盟

hdfs block appendChunk

技术“开源”对于金融业软件发展的影响

Speedoooo

安全 ios开发 APP开发 Andriod开发 小程序容器

域名基本信息查询小技巧

喀拉峻

网络安全 安全 信息安全

【转】java开发之MyBatis 原理与核心组件

@零度

mybatis JAVA开发

Kafka 消息存储与索引设计

编程江湖

kafka

网络安全好学吗?手把手教你学主动信息收集,网络安全基础教程

学神来啦

网络安全 信息安全 渗透测试· kali kali Linux

60 K8S之EFK日志管理系统

穿过生命散发芬芳

k8s 28天写作 12月日更

面试官:方法重写时需要注意哪些问题?

王磊

兄弟要盘吗?

为自己带盐

爬虫 dotnet 28天写作 12月日更

在线JSON转PHP Array工具

入门小站

工具

【转】大数据开发之Spark面试八股文

@零度

大数据 spark

☕【权限设计系列】「认证授权专题」微服务架构的登陆认证问题

码界西柚

微服务架构 12月日更 权限认证机制 授权设计

架构训练营模块三作业

zhongwy

架构实战营 「架构实战营」

助车企升级,旺链科技与南方电网、联想等名企同斩获「创新案例奖」

旺链科技

区块链 产业区块链 供应链金融

大型集团企业云管平台建设参考架构

华为云开发者联盟

架构 运维 IT治理 分布式部署 ManageOne

带你认识三种kafka消息发送模式

华为云开发者联盟

kafka 时间 异步 消息发送 producer

尚硅谷大数据之Canal视频教程发布!

@零度

大数据

Spring框架基础知识(03)

海拥(haiyong.site)

28天写作 12月日更

Amazon Aurora 并行查询_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章