为什么我的 Amazon RDS 实例这么慢?

Jon*_*han 5 performance sql-server amazon-rds

我目前使用 SQL Server Express 运行 Windows Server。我想遵循最佳实践并将应用程序与数据库分开,因此我创建了一个 RDS 实例并导出了我的数据库。

但是……速度太慢了。我正在从我的本地机器运行一个测试查询,该查询选择 12000 行 - 对于我的原始设置,它需要不到 1 秒,但对于 RDS 需要 16 秒。当然,这不可能是规范的问题;我的小型 RDS 实例实际上有更好的规格。比我的 Windows 服务器。

这里会发生什么?

seh*_*ope 7

只是猜测,因为没有足够的信息来真正解决这个问题,但这可能是网络延迟。您是说到本地数据库的本地连接速度很快,但本地到远程数据库的速度很慢。在所有其他条件相同的情况下,唯一的区别是您(本地)和远程数据库之间的网络连接。

一般来说,AWS 速度非常快,并且网络稳定,但您可能会注意到更多闲聊协议的延迟问题。我不太熟悉 SQL Server 的有线协议,但我知道例如 Oracle 是一个相对健谈的协议,所以它可能是相似的。因此,当客户端和服务器(数据库)之间的网络连接位于具有最少跃点的低延迟网络上时,您会看到更好的性能。

另一个问题可能是,如果您的本地 Internet 连接没有太多带宽(例如 1 Mb/s DSL)并且您尝试从远程数据库流回大量行。

您应该从靠近 RDS 实例的 Windows 实例重复您的测试。我认为您不允许远程访问 RDS 实例本身,但您应该能够启动同一可用区中的 Windows 实例。这应该足够接近实际部署中的情况。

此外,如果您计划将远程 Amazon RDS 实例用作在 Amazon 上运行的应用程序的数据库,那么您确实需要提前测试性能。预期用例是让您的应用程序在 EC2 上运行,以便您与数据库处于低延迟网络上。它仍然可以远程工作,但性能将大不相同。