数据库建模(针对该特定情况的性能尽可能进行最佳设计)



我目前正在开发一个Minecraft插件,该插件将使用数据库处理一些数据,这些数据按时间线分割,基本上该表将具有BIGINT字段,例如:kills,deals,winstreak,losstreak,诸如此类的东西,但它们在玩家工具包之间是分开的,这意味着玩家有一些可以使用的工具设置,每个设置都需要自己的行,因为需要区分setup1的死亡和setup2的死亡,同时使用mysql的ORDER BY生成排行榜。

当然,该表将被编入索引,因为我们正在做用户排行榜上的排名,而该表将越来越多地呈指数级增长,我们期待着以最佳方式(在性能方面(设计它。

设置是预定义的,玩家只能自定义,但它们的名称永远不会更改,所以我考虑将名称用作表格列中的字段。

时间线为:每日、每周、每月和终身。

我正在寻找最具性能的方式,因为这些ORDER BY可以在一秒钟内调用很多次。

我考虑过为每个设置创建4个表,setupkey_daily,setupkey_weekly。。。setupkey_lifetime。

另一种方法是,不是为每个时间线都有一个表,而是在列中指定它,比如:列中的setupkey_daily,以及与同一玩家UUID相关的许多行。

我在考虑这个只针对每个时间线的表所要做的迭代量,而不是针对每个设置的表。

如果有一个正确的设计,最具性能的设计,以及在必要时提高这些查询性能的技巧,我应该怎么做?

您只想将数据库用于存储,并在上面写一个缓存层来管理内存中的有序列表。它可以在启动时读取数据库,在内存中应用更改后将更改写入数据库,并管理内存中的排序。

当你需要展示排行榜时,它会立即从记忆中产生,而且速度非常快。

最新更新