數據庫相關

數據庫性能優化


1.主鍵
2.索引
3.減少行數 ———— 二進制流
4.列拆分
5.行拆分




數據庫操作流程思考
遊戲的數據存儲按照對象分成兩部分。玩家數據和服務器數據。
遊戲的數據存儲按照存儲寫操作方式分成兩種。立即存儲和緩存定時存儲。


對於交易相關數據庫流程存在兩種方案
1. 基本功能獨立修改方案
對於通用交易貨幣制作基本流程,所以其他流程涉及到該方面的修改的都通過調用該接口實現。
該方案後續功能開發都可以避免重複進行通用貨幣修改的流程製作,可以減少後續功能開發的重複性和複雜度。
但是由於流程獨立開發,數據在數據庫通過不同的存儲過程寫入。不能通過事務保證數據完整性。需要邏輯層進行保證。

2. 完整功能事務方案
所有交易相關流程都同時進行所有相關數據的更新寫入。
後續功能開發繁瑣,但是單獨操作可以通過事務來保證數據完整性。當然仍然是不能保證數據的安全性。
另外對於數據庫寫入需要嚴格序列化,否則會導致數據寫入的多入口問題而產生數據的重複覆蓋。
所以對於多玩家交易數據,玩家與服務器數據的同時寫入存在多序列參數的問題。明前不支持。
另外由於存在定時存儲機制,也會導致定時存儲的數據和立即存儲的數據之間的不完整性。

所以通過兩種方式,都不能解決數據完整性的問題,更加不能解決數據安全性的問題。需要通過另外的機制來解決該問題。
進行數據安全保證機制,就可以同時解決數據安全性問題。


玩家所有數據在DBApp上都存在現場。都如存儲失敗不會導致立即踢人,而僅僅不重置寫入數據的標誌位。玩家下線導致的現場關閉導致的數據持久化失敗則把玩家數據全部流化記錄到玩家數據裏面。而DBApp記錄一個現場映射。
玩家登錄如果發現存在現場,則通過數據庫初始化後,通過文件現場覆蓋恢復。
服務器數據也要存在緩存。如果寫入失敗,在關閉服務器的時候寫入現場。
服務器重啓的時候先檢查這些文件並重寫入這些數據。寫入失敗則不能初始化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章