我在亚马逊上使用带有 MySQL 接口的 RDS。我的应用程序在 EC2 节点上运行并读取/更新数据库,但是读取和写入的次数太多,从而降低了性能。大多数情况下,连接数超过了允许的限制。我正在考虑使用 Elasticache 来提高性能,但是我没有在网上找到资源,如何配置数据库以有效地使用它。这是提高我的读/写性能的最佳方法吗?有什么建议么?
3 回答
您不能只是“打开”内存缓存。您需要编写与 memcache 交互的代码,以便将数据库查询结果缓存在 memcache 中。看看这个用户指南——我认为它会给你一个关于如何使用 memcache 的好主意:
http://www.memcachier.com/documentation/memcache-user-guide/
性能与所用查询的类型和结构有关,因此可能存在一些优化空间。也许您可以提供有关所使用的确切查询的更多详细信息。但是,您可以从不同的角度解决这个问题 - 如果您有自动缩放功能,您可以在需要时简单地将数据库扩展到其他机器,这样即使没有任何性能优化也可以容纳无限数量的连接(当然,如果你优化它会提高性能)。这在 RDS 上是不可能的,但我知道在 EC2 上运行的至少还有两个其他云数据库提供商提供自动缩放 - www.xeround.com和www.enterprisedb.com。
您可以使用 elasticache 作为 rds 数据库的二级缓存。如果您使用 java,则可以使用 hibernate-memcached 库。但是您仍然需要根据您的数据配置在二级缓存中缓存的方式和内容。
此外,您至少可以在 RDS 上使用只读副本来拆分读取流量。
(您使用的是什么实例类型,您是否看到它们具有不同的 i/o 容量?)