繁体   English   中英

数据库建模(针对此特定案例的性能可能的最佳设计)

[英]Database modeling (best design possible for performance of this specific case)

我目前正在开发一个 Minecraft 插件,其中将使用数据库存储一些数据,该数据按时间线拆分,基本上该表将具有 BIGINT 字段,例如:杀戮、死亡、winstreak、losstreak 等,但是它们在玩家工具包之间拆分,这意味着玩家有一些他可以使用的工具设置,并且每个设置都需要自己的行,因为需要区分 setup1 的死亡和 setup2 的死亡,同时使用ORDER BY of mysql 生成其排行榜。

该表当然会被索引,因为我们正在做用户的顶级排行榜,并且该表将呈指数级增长越来越多,我们期待以最佳方式设计它(在性能方面)。

设置是预定义的,玩家只能自定义但他们的名字永远不会改变,所以我想用名字作为表格列中的字段。

时间线是:每天、每周、每月和生命周期。

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

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

另一种方法是不为每个时间线设置一个表,而是在列中指定它,例如:setupkey_daily 在列中,以及与同一播放器 UUID 相关的许多行。

我正在考虑仅针对每个时间线的该表必须针对每个设置的表进行的迭代量。

如果有正确的设计,性能最高的设计,我应该怎么做,有什么想法可以在必要时提高这些查询的性能吗?

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

当您需要展示排行榜时,它立即来自memory,速度非常快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM