我们都知道MMO游戏的流行趋势。玩家面对面的地方。然而,在游戏过程中,有大量的 SQL 插入和查询,如下所示
- 每 12 分钟或 500 名玩家/小时平均/最少 100 场在线锦标赛
- 在游戏进度表中,我们正在存储每个玩家的移动
- 12轮4人锦标赛可有48条记录
- 加上大约相同数量的法术或特殊物品
- 每场比赛总共 96 个或每小时 48000 个记录插入(500 名玩家/小时)
针对我之前的问题(提高 MMO 游戏性能),我更改了架构并且我们没有直接写入数据库。
而是在 a 中累积所有值DataTable
。然后,只要DataTable
有超过 100k 行(有时甚至可能在一小时内),该过程就会以 csv 格式写入文本文件。另一个后台应用程序经常扫描文件夹中的 CSV 文件,读取任何可用的 CSV 文件并将信息存储到服务器数据库中。
问题
我们是否可以直接从另一个应用程序访问游戏应用程序中存在的数据表(它读取数据表并清除已读取的记录)。这样就代替了从磁盘写入和读取,我们直接从内存中读取和写入。
有没有比 DataTable 更快的方法,它可以保存大数据,但在排序和更新操作中相当快。因为我们必须经常扫描用户 ID,更新游戏状态(几乎在每次插入时)。它可以是缓存实用程序或快速扫描/搜索算法甚至是 CollectionModel。现在,我们使用 foreach 循环遍历 a 中的所有记录并在
DataTable
用户存在时更新行。如果没有,那么我们创建一个新行。我尝试使用SortedList
和类,但它不仅使工作量加倍,内存使用量的增加也大大降低了整体游戏性能。
谢谢
阿文德