我们有一个 Facebook 游戏,它将所有持久数据存储在一个大型 Amazon RDS 实例上运行的 MySQL 数据库中。我们的一张桌子大小为 2GB。如果我在该表上运行超过几秒钟的任何查询,我们的游戏执行的任何 SQL 操作都将失败并出现以下错误:
HTTP/1.1 503 服务不可用:后端服务器已满
这显然降低了我们的游戏!
在这些期间,我监控了 RDS 实例上的 CPU 使用率,虽然它确实达到峰值,但它并没有超过 50%。以前我们使用的是较小的实例大小,它确实达到了 100%,所以我希望只在问题上投入更多的 CPU 容量就可以解决它。我现在认为这是打开连接数量的问题。但是,我使用 SQL 才 8 个月左右,所以我不是 MySQL 配置方面的专家。
是否有一些配置设置我可以更改以防止这些查询使服务器超载,或者我应该在我们的游戏启动时不运行它们?
我正在使用 MySQL Workbench 来运行查询。
任何帮助将不胜感激 - 谢谢!
编辑:
这是一个例子....
SELECT *
FROM BlueBoxEngineDB.Transfer
WHERE Amount = 1000
AND FromUserId = 4
AND Status='Complete';
该表如下所示:
TransferId Started Status Expires FromUserId ToUserId CurrencyId Amount SessionId
1177 2012-06-04 21:43:18 Added 150001 2 4 1 12156
1179 2012-06-04 21:48:50 ISF 150001 2 4 1 12156
1181 2012-06-04 22:08:33 Added 150001 2 4 25 12156
1183 2012-06-04 22:08:41 Complete 150001 2 4 50 12156
1185 2012-06-04 22:08:46 Added 150001 2 4 200 12156