MySQL数据库优化总结(4)
来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:50 点击:次
宁可集中批量操作,避免频繁读写
系统里包含了积分部分,学生和老师通过系统做了操作都可以获得积分,而且积分规 则很复杂,限制每类操作获得积分不同,每人每天每类积分都有上限。比如登录,一次登录就可以获得1分,但是不管你登录多少次,一天只能累积一个登录积分。 这个还是简单的,有的积分很变态,比如老师积分中有一类是看老师判作业的情况,规则是:老师判了作业,发现学生有错的,学生改过了,老师再判,如果这时候 学生都对了,就给老师加分,如果学生还是错的,那就接着改,知道学生都改对了,老师都判完了,才能给老师加分。如果用程序来处理,很可能每个功能都会额外 的写一堆代码来处理这个鸡肋似的积分。不仅编程的同事干活找不到重点,还平白给数据库带来了很大的压力。经过和需求人员的讨论,确定积分没有必要实时累 积,于是我们采取后台脚本批量处理的方式。夜深人静的时候,让机器自己玩去吧。
这个变态的积分规则用批处理读出来是这样的:
?
1 select person_id, @semester_id, 301003, 0, @one_marks, assign_date, @one_marks
2 from hom_assignmentinfo ha, hom_assign_class hac
3 where ha.assignment_id = hac.assignment_id
4 and ha.assign_date between @time_begin and @time_end
5 and ha.assignment_id not in
6 (
7 select haa.assignment_id from hom_assignment_appraise haa, hom_check_assignment hca
8 where haa.appraise_id = hca.appraise_id and haa.if_submit=1
9 and (
10 (hca.recheck_state = 3004001 and hca.check_result in (3003002, 3003003) )
11 or
12 (hca.recheck_state = 3004002 and hca.recheck_result in (3003002, 3003003))
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>