2017-10-08 46 views
0

我正在尝试亚马逊极光为我的MySQL数据库。当我运行mysqldump时,我的数据库大约是600 GB。我有一个本地运行的实例,一个在我的VPS中,另一个与Aurora(我上传并在过去24小时内)。试用极光,没有看到它与查询快速

当我运行“select employees_no_cache * from employees;”在这三种环境中,我看到Aurora需要更长的时间才能返回超过100万条记录。我试图尽可能地比较苹果和苹果。我已经在MySQL Workbench和一个终端上运行了这个查询。结果在本地约3.5秒,Aurora的VPS为214秒。

在我放弃使用Aurora之前,我看到为什么我看到的perf结果是我从来没有想到的一种技术,其性能超过标准MySQL的5倍?查询我的Aurora数据库就像我的MySQL数据库(无论是工作台还是终端)都是不切实际的性能测试?我需要做一些进一步的配置或调整吗?

我相信极光快,所以我必须做错事。如果从我的结尾查询起来很慢,那么我期望如果我的应用程序查询它,它会是类似的。

回答

3

是的,测量单个的响应时间​​查询从连接到RDS Aurora实例的本地工作站上的工作台/终端客户端返回100万条记录是对性能不切实际的测试。这不仅不是苹果对苹果的比较,而且您的应用程序在生产中查询数据库时也不会(或不应该)具有类似的行为。

首先,要比较苹果苹果:

  • 运行您对具有相同的计算能力(CPU速度/计数,内存,磁盘I/O)的服务器测试。如果您的本地工作站,VPS和RDS实例不同,这会影响您的比较。将运行Aurora的RDS实例与运行相同确切实例类型的MySQL的RDS实例进行比较(例如,r3.8xlarge)。
  • 跨相同的网络边界建立您的测试客户端/服务器连接。与从本地运行的实例通过本地套接字发送数据相比,通过笔记本电脑的Internet连接发送一百万行数据可能需要很长时间。确保您的测试服务器位于同一个通用网络中(例如,它们都位于AWS的同一区域/可用区域中),以确保网络连接具有一致的属性。
  • 使用相同的查询和相同的源数据(这听起来像你已经这样做)。

其次,运行类似于你所期望的测试,如果你的应用程序是查询数据库:

  • 措施并发查询吞吐量(请求每秒),而不是单个查询性能(每个请求秒)。对于关系型数据库,数据库可以处理的并发事务数(限制了您的应用程序可以处理的用户数)可以与单独查询完成隔离所花费的时间同等重要(或更多)。 sysbench是一个标准的数据库基准测试工具,可启动大量并发查询和度量请求/秒。
  • 运行大量小查询,而不是单个大查询。尽管你的应用可能有所不同,但网络应用倾向于为大量并发用户采集少量的个性化数据(想象一个网页显示有关单个对象的详细信息,而不是单个页面上的百万个对象)。sysbench中的OLTP(联机事务处理)基准测试提供了类似于典型Web应用程序工作负载的set of queries。对于Amazon Redshift等数据仓库产品,长时间运行的全表扫描类型查询得到了更好的优化。
  • 从与数据库相同的网络中的另一台计算机建立客户端/服务器连接。您的Web服务器应尽可能靠近数据库部署,因此网络带宽较高且延迟较低。否则,网络连接可能是一个比其他任何事情都更大的瓶颈。
  • 使用大型多CPU实例进行测试。 Aurora的许多优化重点都是在多个CPU内核之间线性扩展读写吞吐量。使用一个微型的单CPU实例,你可能看不到比MySQL多的吞吐量改进。 r3.8xlarge实例类型有32个CPU,并且在Aurora的优化中性能会更好。

要重现亚马逊使用的确切性能基准,您可以按照Amazon Aurora Performance Benchmarking Guide中坚韧不拔的设置细节进行操作。

对于5倍性能声明背后的具体数字,请参阅Verbitski et al。 (2017),"Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases"

每个更高的实例大小和用于r3.8xlarge Aurora的性能加倍达到121000写入/秒和600000读/秒,其是5倍 MySQL的5.7,其在20000顶出[写入] /秒和125,000 [读取] /秒。

+0

我很欣赏详细的回复。你提出有效的分数。我的苹果与苹果的比较不会像我所描述的那么简单,所以我需要做更多的工作来进行公平比较,以确定Aurora是否能够满足我的需求。再次感谢您的回复。 – Mule