我运行一个用 python 编写的 Web 应用程序,并使用 mysql 作为我们的主要数据存储。我们在 amazon RDS 上有一个包含数千万行的大表,预计它会大 10 倍。我们运行许多查询,根据主键选择几百个随机行(例如“select * from table where id IN (ids)”,其中 id 是主键)。它有时很慢,需要 30 多秒。最终我们将不得不对表进行分片,但我们一直在考虑尝试保留缓存在 memcache 中的行的副本。在运行选择查询之前,我们会发送一个 multi_get 到内存缓存。鉴于我们的工作流程(我们运行大量更新),如果我们也抢先将行的更改写入 memcache 版本,我们只会获得显着的性能提升。
我想知道是否有人使用过这样的设置,以及是否有 ORM 可以很好地处理这个或其他有用的工具(比如可能从 mysql 二进制日志中提取更改并将它们发送到 memcache)。最危险的部分是如果有人忘记更新或至少使他们在 mysql 上更新的 memcache 中的行无效。
谢谢!