数据库使用情况分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库使用情况分析
一、警报日志:
1)计算一个月插入数据
目前操作为15S会执行一次数据库操作;假设有2000台;那么;一个月的数据为:
单枪柜:
4*60*24*30=240 0000
如果为2000台:
240*2000=40000W
这是极限值;
2)计算数据库插入频率
按时间权限处理算下数据库插入操作频率:
15S/2000 =7ms执行一次插入操作
3)数据查询
数据库的数据要与其他的表用ID做关联,那么这个操作会更糟糕;因为警报日志表中在7ms就会执行一个插入动作,所以关联的查询如果在7ms中检索不出来,检索的数据就会有脏数据;(检索和插入动作产生冲突,数据库在处理检索和插入的同时还会处理他们的冲突事情)
由上可以看出数据库的性能要远远高于7ms才可以
以上为单张表警报日志处理极限值分析;
以上解决方法:
1)插入执行时间加长到1个小时,相当于执行极限频率提高到7ms*60*4=5s
2)分库,把此单张表移到一个单独数据库中;
3)换中型数据库MSSQL 或大型数据库ORACLE;
二、取枪还枪日志极限值分析
1)枪弹柜取枪与还枪动插入操作
枪弹柜取枪与还枪动作限定每天执行一支枪一个动作;每个枪弹柜只有十支枪,子弹不用取还计算;
一个枪弹柜一天执行的动作数:
1*10=10次;
按2000枪弹柜计算:
一个月执行的次数为:
10*2000*30=30 0000数据;
取还枪表一个月的数据要有30W数据存在;一年大约为400W数据分为两张表,单张表一年数据也近200W;
2)取还枪执行频率
最坏计算:
所有取枪人员在上班同一时间(一小时)取枪计算执行频率为
1*60*60/20000=0.06S
按上述频率计算,数据库的性能至少是执行每个动作不超过0.06s 就不会产生冲突;(数据不会丢或不会出错),但一般数据库中表关联查询(多表查询)都差不止要这个时间;所以产生冲突的可能必会很大;数据库一定要可以处理这种冲突;
三、整个数据库计算
如果计算最坏情况下数据库的使用频率
应该是:
一个60ms执行一次一个7ms执行一次;最坏计算是420ms产生一次冲突(取还枪与警报日志);也就是一秒内会有至少产生两次冲突的可能;
而单独警报日志自身不同动作(插入、删除)是0.007S产生一次冲突,数据库会可能会产生一次冲突;
四、解决方案
1)优化数据库和程序代码;
缺点:对程序员和数据库优化人员的技术要求高;
优点:数据库可以继续使用目前数据库
2)数据分库、数据库读写分离;
缺点:程序需要修改
优点:动作很容易实现
3)换大型数据库(MSSQL 或ORACLE);
缺点:可能需要收费(如果我们项目可以使用破解版本,就可以不用担心),
优点:直接把结构COPY即可;对程序员和数据库优化人员要求低;
4)如果换库建议使用破解版本ORACLE或MSSQL;
五、目前解决方案:
1)警报日志执行单柜频率修改为1小时,即插入动作最坏频率为5S;
2)取枪还枪日志最坏频率为0.06S;
以上看出,后续产生冲突多的是取还枪日志;最坏为0.06秒产生一次冲突;
由警报日志执行频率的0.7ms提升到60ms,应该是基本问题还没有解决;
也就是说明,如果出现最坏情况,取枪还枪日志同样会出现目前这种情况
以上是最坏的计算方式,是极限值仅做参考;是理论存在值,现实出现的可能性不大
以上最坏情况是指2000台柜中的每个柜有10支枪,所有枪在一个小时内取或还一次的情况;
以上均没有计算网络传输时间;以及多表联合查询情况;