专栏首页韩锋频道体验另类“MySQL”的极致性能

体验另类“MySQL”的极致性能

AnalyticDB,是阿里云推出的一款数据库产品,主打海量实时数据分析领域。说其是另类“MySQL”,是因为其兼容MySQL生态,可以像MySQL一样去使用,非常简洁方便。不久前,其还推出单机版规格,颇为惊艳,可以说把大数据的门槛大大降低了。正如上图所表现的,"大数据"这头大象也可以敏捷奔跑起来。假期无事,特针对AnalyticDB新推出的单机版与MySQL,在规模数据下的查询表现做了个对比分析。

《敏捷大数据》的时代到来

曾几何时,大数据的概念非常火热。但我们这里要看到,这里的大数据通常代表两层含义,一是所谓符合4V标准的数据;二是随之诞生的一些适合处理前者问题的技术。随着近些年来,数据在企业中扮演者越来越重要的地位,之前常见的一些“中小”数据,也逐步变成了大数据。此外,随着数字化浪潮的发展,数据在企业经营决策中扮演着愈发重要的地位,随之而来对数据计算的需求也越来越强烈。而之前谈到的大数据技术,并没有很好地跟上现实需求,其较高的技术门槛、离散的技术生态、非传统的使用方式都阻碍了快速普及。AnalyticDB的推出,正是看中了这一问题,以近似传统的使用方式,来处理现在面临的海量、实时类数据问题。进而,也提出了“敏捷大数据”的理念,摒弃传统大数据技术的繁复冗赘,而倡导以一种更加简洁的方式来使用数据。

1. 背景介绍:数据库新兵“ADB”

分析型数据库MySQL版(AnalyticDB for MySQL)是云端托管的PB级高并发实时数据仓库,是专注于服务OLAP领域的数据仓库。在数据存储模型上,采用关系模型进行数据存储,可以使用SQL进行自由灵活的计算分析,无需预先建模。利用云端的无缝伸缩能力,分析型数据库MySQL版在处理百亿条甚至更多量级的数据时真正实现毫秒级计算。其特点包括:

  • 极致性能 分析型数据库MySQL版运用新一代超大规模的MPP+DAG融合引擎,采用行列混存技术、自动索引、智能优化器等技术。针对复杂SQL查询速度相比传统的关系型数据库快10倍以上。此外,其采用的分布式架构可快速扩容至数千节点的超大规模,进一步提升速度。
  • 灵活部署 分析型数据库MySQL版,采用存储和计算分离架构,可根据需要调整节点数量和动态升降配实例规格。既可实现Scale Up,也可以实现Scale Out。方便用户根据自身情况进行选择。
  • 简单易用 分析型数据库MySQL版,全面兼容MySQL协议和SQL:2003,可很方便的融入MySQL生态体系。通过标准SQL和常用BI、ETL工具平台,可轻松使用分析型数据库MySQL版。
  • 海量规模 分析型数据库MySQL版是全分布式结构,无任何单点设计。整体系统可通过横向扩容来大幅度扩大存储规模及提升查询SQL性能和并发处理能力。其可实现数千节点,PB级规模的体量。

单机版介绍

AnalyticDB for MySQL单机版,于2019年12月底推出。其目的是大幅降低企业用户使用大数据的成本,可方便用户快速享受到数据实时分析所带来的技术红利。其推出的多种规格,可满足中小规模用户的数据分析需求。其核心特点如下:

  • 门槛降低 用户仅需之前约50%的成本,即可使用AnalyticDB。这将大大降低用户的成本投入。无论是小白用户入门大数据,还是既有用户新增测试、开发环境都是不错的选择。
  • 极速性能 在应对复杂SQL场景下,单机版虽较集群版性能有所降低,但其综合性能仍可达开源MySQL 10倍以上。特别适合于针对MySQL只读查询压力大的情况,可快速根治释放压力。
  • 使用灵活 用户可根据需要,随时选择使用更为强大的集群版,减少用户的前期投入。阿里云也将随后推出平滑迁移方案。
  • 免运维优化 AnalyticDB,采用开箱即用策略,免运维、免优化。可快速享受到极速性能所带来的红利。

2. 测试概述:ADB vs MySQL

1). 环境说明

  • SSD云盘IOPS在25000,高效云盘为5000。
  • RDS和ADB均为阿里云同地域的提供的默认配置。

2). 样本说明

测试样本采用常见的人力资源模型,数据采用了人工构造方式。

  • 数据结构 原生结构如下,ADB由于是分布式结构,需要定义分布键(使用了主键)。此外,MySQL后续做了结构优化,添加了部分索引。后续测试分两组对比。
  • 规模

3). 测试集说明

根据SQL特点,将其归纳为十个大类。每类抽象出有代表性的若干语句,作为测试语句。

4). 测试方法

  • 数据加载 使用原生MySQL的默认处理,insert into … values(),()方式插入。
  • 前置操作 插入后,进行了analyze table操作。
  • 测试操作 使用自定义脚本,进行多轮查询测试,并记录SQL执行时长。
  • 测试数据
    1. 为避免大数据传输影响,执行结果使用聚合操作后返回,部分结果会存在下推影响结果的情况。对MySQL和ADB影响一样。
    2. 所有测试,均进行三组,取执行时长的平均值。
    3. 所有数据的默认单位为毫秒(ms)。
  • 测试说明
    1. 单机版规格,性能较集群版有一定差距,且无法进行性能扩展。只能在有限程度做ScaleUp,因此对性能要求较高的用户,建议使用集群版。
    2. 由于ADB采用的分布式架构,集群内组件较多。在单机环境内部署完整环境,自身资源消耗比例较大。本组测试,只是为了对比同等资源下的MySQL与ADB的性能表现,对ADB而言远非最佳实践。
    3. 单机版规格后端使用高效云盘,其IO性能较SSD云盘差异巨大,这点也对测试结果造成较大影响。如考虑高性能,还是建议使用集群版(其后端为SSD云盘)。
    4. 针对MySQL的测试,使用了原始状态和优化后,分别进行了测试。5000万规模,因执行时间过长未进行MySQL原始状态的测试。ADB全程未经任何调优,为默认安装后的状态。

3. 测试结果:ADB vs MySQL

1). 结果概览

对比数据为MySQL/ADB,数字小于1,表示前者优于后者;数字大于1,表示后者优于前者。数据越大,差距越明显。图中灰色部分表示MySQL优于ADB的部分。

2). 分项说明

  • 简单查询

对于此类查询,基本不需要优化器更多优化,就是比拼数据提取的能力。ADB采用分片机制,类似于MySQL的“分库分表”,并行提取数据。

  • 排序

此部分,优化前后差异较大。上图为MySQL未优化的情况,理所当然使用了”Using filesort”,性能很差。在优化后,通过加入索引这一有序结构,可以大幅降低排序成本,性能良好。ADB是分布式架构,需要汇总后排序;而单机版受限架构,无法利用多物理节点的能力,表现一般。

  • 过滤

这一情况类似“简单查询”。在提取数据后,多一步CPU计算过滤过程,这一点单机版的ADB也没有太多优势。这里面比较特殊的是binary比较,引入后使用全表扫描,即使增加索引也效果有限。但ADB则表现优异,猜想是与其列式存储等因素有关。

  • 模糊查询

这一类查询,ADB有压倒性的优势。因与其列式存储等因素有关。

  • 逻辑条件 同"简单查询"。
  • 统计

这一组,也是ADB大优。原理就在于分布式架构与单体架构,及行式与列式存储的差异。

  • 分组

ADB胜出,原理同上组。

  • 关联

关联部分,ADB使用分布式架构,需要有分片间的数据交换等步骤,并最终使用Hash Join完成。而MySQL依托于索引有序结构,可使用Block Nested Loop快速获得数据。8.0的Hash Join也许对大表间的关联更有优势。

  • 集合

这一组也是ADB胜出,原因还是出于其分布式架构所致。

  • 其他

对于分页类的操作,在有索引的有序结构下,MySQL表现不错。ADB中规中矩。

4. 测试总结:ADB vs MySQL

一轮测试下来,对ADB有了更多的了解认识。作为新兴的数据库,对于实时分析类场景,这一产品颇有其特点。此外,其兼容MySQL生态,也很有吸引力,客户的大量软件资产,可以平滑迁移。在架构上,甚至可作为MySQL的从库存在,将复杂类的查询需求迁移上去,减轻主备库压力。可做到一套代码,适用多种场景。这远比之前那种消费到大数据平台,然后异步查询来的优雅。最后,总结下AnalyticDB的适用场景,及与MySQL、大数据平台的对比。(星号部分为计划发展中)

本文分享自微信公众号 - 韩锋频道(hanfeng_channel),作者:韩锋频道

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据分析领域的几点观察

    在过去的两年,数据分析领域发了诸多变化。近期阅读了很多资料,尝试从行业、产品、技术等角度,谈谈自己的几点观察。供各位参考!

    用户5548425
  • ”数据血缘“入门

    数据的产生、加工融合、流转流通,到最终消亡,数据之间自然会形成一种关系。借鉴人类社会中类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。数据血缘是元...

    用户5548425
  • 数据使用全过程的一点思考

    数据,是我们对客观事物的数量、属性、关系等的抽象描述,进而方便人们对其保存、传输和使用。但其没有相关背景,不能表达具体含义。

    用户5548425
  • MySQL 数据库的高可用性分析

    MySQL 数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在 MySQL 数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目...

    腾讯云数据库团队
  • 小白博客 sqlmap之POST登陆框注入方式二【自动搜索表单的方式】

    sqlmap.py -u "http://192.168.160.1/sqltest/post.php" --forms 它会有几次消息提示: ? ...

    奶糖味的代言
  • 神仙级MySQL调优及架构笔记,今年见过最全的MySQL笔记,没有之一

    MySQL 作为一款轻量级数据库被越来越多的企业使用,特别是 MySQL 的 innoDB 的存储引擎和 8.0 版本发布以来更是有了较大的提升。现在免费分享给...

    用户5546570
  • QPS从0到4000请求每秒,谈达达后台架构演化之路

    达达是全国领先的最后三公里物流配送平台。 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社会闲散人力资源,解决O2O最后三公里即时性配送难题(目前达达...

    范蠡
  • 数据猿专访京东万象杜宇甫:数据交易行业需要“破界”

    数据猿导读 在一个良性的生态中,同时存在着竞争与合作的关系。生态中的企业互相竞争,演化出更加适合市场的数据产品,为想要购买合法数据的企业创造更高的价值,促进整个...

    数据猿
  • MySQL的undo,redo,二阶段提交思维导图

    本文是结合CSDN的公开课《深入理解MySQL中的undo,redo,mvcc》视频和相关资料整理了一张思维导图,总结的时候,部分 OS/MySQL crash...

    用户1278550
  • Range单元格对象方法(二)AutoFilter自动筛选

    大家好,今天继续介绍单元格对象的常用方法,本节主要介绍自动筛选AutoFilter方法。

    无言之月

扫码关注云+社区

领取腾讯云代金券