记录小速度快是显然的,但是我要讨论的并不是泛例,而是具体的日志系统。
游戏运行中会产生大量的日志,为了便于管理,日志越详细越好,但是日志量太大,又会影响数据库的性能,所以有必要在两者之间达成一个最佳结合点。
问道一个服务器每天产生近千万条的日志(已经过滤了一部分不重要的日志),当服务器日志超过四千万条时数据库的性能会有比较明显的下降,所以数据库大概只能记录最近三天的用户日志。但是我需要记录更长的时间,比如7天甚至一个月。
服务器的硬件配置已经足够好了,只能从软件角度考虑解决方案。
可以做的事情是,把日志记录的字符串字段转为整数类型,以此减小记录的长度。这样做肯定可以减少数据库的大小,但是能不能带来更好地性能?也就是记录超过四千万条以后,能不能对性能没有什么太大的影响?如果对性能没有明显帮助,那么磁盘空间本身并不值得珍惜。
日志系统主要是进行插入操作,我认为插入记录本身所需要的时间不应该受到已有记录数量的限制(简单的申请PAGE就可以了,申请PAGE的时间显然不应该随着库变大而有什么明显变化),关键时间是花在索引上了。如果记录的索引变小,那么B树变小,相同的内存缓存可以保留更多的B树节点,这样可以使得查找、建立索引的时间变少。但是,如果记录比原先缩小一倍的话,也许B树的I/O操作仅仅多了一次,如果是这样,小记录能获得明显的效率提升么?
需要测试才能有结果。
没有评论:
发表评论