今天将把如下图所示测试用例进行测试:
MainCache代表主线程是缓存操作
DaemonORM代表守护线程是ORM入库操作,其中ORM开启了事务处理
OnlyORM代表仅仅使用ORM直接入库操作
本框架采用的是MainCache+DaemonORM的机制,即所有玩家对DB的任何操作都是在内存中进行,任何变更都会由守护线程后台通过ORM同步到DB中
以下测试结果对MainCache+DaemonORM与OnlyORM进行了对比
在里面有一万条记录的基础上做单条记录的操作:
7、让数据库插入一条记录时的消耗【MainCache+DaemonORM】 测试结果:0.3167 ms
11、让数据库查询一条记录时的消耗【MainCache+DaemonORM】 测试结果:0.0083 ms
15、让数据库更新一条记录时的消耗【MainCache+DaemonORM】 测试结果:0.0108 ms
19、让数据库删除一条记录时的消耗【MainCache+DaemonORM】 测试结果:0.387 ms
9、让数据库插入一条记录时的消耗【OnlyORM】 测试结果:1.6591 ms
13、让数据库查询一条记录时的消耗【OnlyORM】 测试结果:189.6548 ms
17、让数据库更新一条记录时的消耗【OnlyORM】 测试结果:189.9446 ms
21、让数据库删除一条记录时的消耗【OnlyORM】 测试结果:193.748 ms
在空记录的基础上做万条记录的操作:
8、让数据库插入一万条记录时的消耗【MainCache+DaemonORM】 测试结果:586.347 ms(10秒左右真正入库)
12、让数据库查询一万条记录时的消耗【MainCache+DaemonORM】 测试结果:0.0321 ms
16、让数据库更新一万条记录时的消耗【MainCache+DaemonORM】 测试结果:0.4955 ms (10秒左右真正更新)
20、让数据库删除一万条记录时的消耗【MainCache+DaemonORM】 测试结果:48.587 ms (15秒左右真正删除)
10、让数据库插入一万条记录时的消耗【OnlyORM】 测试结果:13320.2374 ms
14、让数据库查询一万条记录时的消耗【OnlyORM】 测试结果:189.4596 ms
18、让数据库更新一万条记录时的消耗【OnlyORM】 测试结果:13711.9439 ms
22、让数据库删除一万条记录时的消耗【OnlyORM】 测试结果:17200.4408 ms
从以上结果可以看出:OnlyORM的效率明显比MainCache+DaemonORM的方式低很多,当然如果不启用事务应该会提升效率,但是在生产环境中我采用MainCache+DaemonORM的方式,
因为它效率特别快,当然Legend集群架构中是支持多个DBServer的,因此在不同DBServer之间的缓存同步处理此处不提及,可以参见《网络游戏大世界分布式自适应服务器架构详解》