数据库相关

来源:互联网 发布:知乎炸鱼 编辑:程序博客网 时间:2024/04/20 03:25
数据库性能优化


1.主键
2.索引
3.减少行数 ———— 二进制流
4.列拆分
5.行拆分




数据库操作流程思考
游戏的数据存储按照对象分成两部分。玩家数据和服务器数据。
游戏的数据存储按照存储写操作方式分成两种。立即存储和缓存定时存储。


对于交易相关数据库流程存在两种方案
1. 基本功能独立修改方案
对于通用交易货币制作基本流程,所以其他流程涉及到该方面的修改的都通过调用该接口实现。
该方案后续功能开发都可以避免重复进行通用货币修改的流程制作,可以减少后续功能开发的重复性和复杂度。
但是由于流程独立开发,数据在数据库通过不同的存储过程写入。不能通过事务保证数据完整性。需要逻辑层进行保证。

2. 完整功能事务方案
所有交易相关流程都同时进行所有相关数据的更新写入。
后续功能开发繁琐,但是单独操作可以通过事务来保证数据完整性。当然仍然是不能保证数据的安全性。
另外对于数据库写入需要严格序列化,否则会导致数据写入的多入口问题而产生数据的重复覆盖。
所以对于多玩家交易数据,玩家与服务器数据的同时写入存在多序列参数的问题。明前不支持。
另外由于存在定时存储机制,也会导致定时存储的数据和立即存储的数据之间的不完整性。

所以通过两种方式,都不能解决数据完整性的问题,更加不能解决数据安全性的问题。需要通过另外的机制来解决该问题。
进行数据安全保证机制,就可以同时解决数据安全性问题。


玩家所有数据在DBApp上都存在现场。都如存储失败不会导致立即踢人,而仅仅不重置写入数据的标志位。玩家下线导致的现场关闭导致的数据持久化失败则把玩家数据全部流化记录到玩家数据里面。而DBApp记录一个现场映射。
玩家登录如果发现存在现场,则通过数据库初始化后,通过文件现场覆盖恢复。
服务器数据也要存在缓存。如果写入失败,在关闭服务器的时候写入现场。
服务器重启的时候先检查这些文件并重写入这些数据。写入失败则不能初始化。
原创粉丝点击