0

好奇用 SQL 数据库在多个游戏中实现排行榜的最优雅方式是什么?

我有游戏 G1,玩家在那里得到不同的分数(从 0 到 100) 我有游戏 G2,玩家在那里也得到不同的分数(但从 0 到 1000) 我有游戏 G3,玩家在那里也得到不同的分数(从 1000 到 10000)

可能是共享玩家(但不是必需的) 我如何实现排行榜,这样我就可以在所有游戏中显示排名前 5 的玩家,并且它不会用大量 SQL 查询杀死我的数据库?我正在谈论这个排行榜的数百甚至数千个请求/秒。

我几乎没有自己的想法,但它们看起来都不够优雅和简单......

4

1 回答 1

0

一种方法是将“排名”放在内存表中并以 1x/秒的速度更新它。然后查询“显示排行榜”页面。这样,您的服务器只会以 1x / 秒的速度查询游戏排名。无论如何,对“排行榜”表的查询都来自内存,并且通常来自查询缓存(如果您启用了它)。

由于排名是派生表,因此没有任何理由将其写入磁盘。

哦——按照@bestprogrammerintheworld 所说的去做——重用你的连接。

于 2013-03-28T13:51:57.833 回答