微信号:infoqchina

介绍:有内容的技术社区媒体

比MySQL 快5倍?Amazon Aurora性能遭社区质疑

2014-11-20 18:00 InfoQ


在美国召开的AWS re:Invent云计算大会上,Amazon高级副总裁安迪·杰西发布了企业级关系数据库Aurora。Aurora是一个面向Amazon RDS(关系数据库服务)、兼容MySQL的数据库引擎,它结合了高端商用数据库的高速度和高可用性特性以及开源数据库的简洁和低成本。Aurora的性能可达MySQL数据库的五倍,且拥有可扩展性和安全性,但成本只是高端商用数据库的十分之一。Aurora具有自动拓展存储容量、自动复制数据、自动检测故障和恢复正常等功能。Aurora的架构如下图所示:

Aurora主要特性如下:


兼容MySQL:Aurora完全兼容使用InnoDB存储引擎的MySQL 5.6,使得使用MySQL编写的大部分代码、应用、驱动等无需改变或者很少改变即可实现迁移到Aurora,反之依然。


快速:Amazon通过紧密集成数据库引擎和基于SSD的虚拟化存储层(专为数据库工作负载而开发),其性能和可用性相较于MySQL有大幅提升,从而降低了存储系统的写入次数、尽量避免了锁定并消除了数据库处理线程带来的延迟。在相同硬件条件下,Aurora提供了相对于标准MySQL高达五倍的吞吐量,每分钟能完成600万的插入操作和3000万的查询操作。


高可用性和高耐久性:Aurora能够在多个可用区上自动复制数据,并持续地把数据备份Amazon S3上,在不影响性能的情况下实现99.999999999%的耐久性。 Aurora提供了高于99.99%的可用性,可在60秒内自动检测大多数数据库故障并恢复正常,而不会出现崩溃恢复或需要重建数据库缓存的情况。Aurora还能够持续监测实例健康状况,如果出现故障,它会自动切换至只读副本而不会丢失数据。


高扩展性:使用Amazon RDS服务扩展了Aurora的容量,还能够增加15个Aurora 副本,以及自动扩展存储容量而无需任何中断,从而避免停机或性能降低的情况。


高安全性:Aurora运行在Amazon VPC里,它能够将Aurora限制在自己的虚拟网络里;在数据传输过程中自动加密数据。Amazon RDS为Aurora集成了AWS身份识别和访问管理(IAM)服务,该服务能够非常安全地控制用户对Amazon AWS服务和资源的访问权限。


非常廉价:Aurora提供了同高端商用数据库同样的功能,但只有高端商用数据库产品成本的十分之一。用户无需前期投入,只需为自己所使用的每个Aurora数据库实例支付每小时的使用费,也没有最低承诺费用或预付费用。


财务软件公司Intuit公有云部门总监Troy Otillio表示:“Intuit在建立和运营高端商用数据库中,进行了大量的投资来为我们的业务提供支持。实际上,为了获得足够的可靠性和性能来满足客户需求,一直以来我们别无选择。Aurora将会改变这个局面,它提供的性能和可用性能够与昂贵的自有数据库和SAN相媲美,并且价格要实惠得多。Aurora的RDS管理功能将让我们可以集中资源和精力处理最重要的事——提供更好的应用,让客户满意。”


在Reddit上关于Aurora的讨论中,用户 Kayjaywt 评论道


Aurora给人以非常深刻的印象,它在磁盘上的处理hotspots的方式、自动拓展存储容量、自动复制数据、服务宕掉或者重启时对缓存持久化的处理方式是极好的。



Amazon Aurora设计兼容MySQL 5.6,所以已经存在的MySQL应用程序和工具可以无缝迁移到Aurora中。据亚马逊称,Aurora每秒钟可执行10万次更新操作,并且每秒钟可进行50万次查询操作,在同等的硬件条件下是MySQL的5倍。


但是Aurora的具体实现细节在AWS re:Invent并未详细提及,目前只有在官方的FAQ页面简单描述了Aurora的存储引擎以及数据模型:


Amazon Aurora存储引擎兼容使用InnoDB存储引擎的MySQL 5.6版本,Aurora并不支持所有的MySQL功能,比如MyISAM。


Amazon Aurora支持两种类型的数据复制,其中包括基于MySQL的binlog(用于记录数据库数据的更新)的读复制。另外的一种方式是通过与主实例共享底层的volumn。


Aurora取得如此出色成绩的原因是因为Aurora数据库引擎集成了基于SSD的虚拟存储专用负载层,以减少存储系统的写入压力,最小化锁竞争以及因数据库线程创建而延误的时间。


而根据官方资料推断,Aurora应该是基于MySQL 5.6,同时对存储引擎做了修改优化,并且存储引擎也应该是基于InnoDB。在Quora上,阿里巴巴的工程师韩富晟也做了同样的推断。同时他认为Aurora除了优化存储引擎外,还应该改进了SQL的优化以及执行过程。


另外,在Quora的回复中,韩富晟同样质疑了Aurora性能测试的准确性,他认为5倍的数据不可信。虽然亚马逊表示是在同样的硬件条件下进行测试,但是Aurora可能是与未调优的MySQL做对比。同样,Dimitri也认为 RDS Aurora的测试数据很可笑,除了高于MySQL性能5倍外的宣言,没有任何的测试细节。而早在一年前,MySQL 5.7就宣布查询速度可以达到每秒50万次,并且具体的测试细节都在博客中做了记录。在最新的MySQL 5.7版本中,查询速度已经可以达到 64万/s。如果再对SQL层做下优化,比如使用InnoDB的Memcached插件,那QPS应该可以达到100万。


期待Amazon公布更多地Aurora的细节以解大家的疑惑。



 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 天佑塘沽!遇到化工爆炸时,9幅图告诉你该如何自救 【第2章第207回】CSS页面布局笔记 为何Facebook工程师会使用100offer挑工作? Web页面测试——控件类(二) 详解Dagger2系列之开始篇:磨刀不误砍柴工