紧急求救:事务死锁问题。
提示:事各(进程 ID 72)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲器。请重新运行该事务。
这是一个考试系统,四十个人一起考试,进入正式考试时出现这错误;
进入正式考试时会随机生成试卷并保存至数据库中,一个学生的试卷约有650条记录(不是学校的那种考试),分三级三个表(试卷总表,题目表,题目明细表)存放。
往数据库中插入数据时会使用事务。
四十个人一起考,约有十来个人会出现以上错误,请高手帮忙分析分析,该如何解决。
在单机上产生试卷并保存所耗的时间约为一秒。
[解决办法]
谁知道你是如何编写程序的?只能胡乱瞎猜。
随便说。首先,你应该不要纠结在技术上。
其次,能不能让这些人的出题时间错开一点?至少在同一秒(或者5秒钟内)出题人数不要超过5个人,例如你可以先给5个人出题,然后等着5个人全都出完题目,才给另外5个人出题......。
注意,程序设计可不是什么关系数据库,而是“程序”设计。关系数据库只不过是个程序运行过程的存储而已,应该以不影响程序运行效率为原则。那些满脑子只有数据库表的人还没有长大。
再次,你也可以在出题之前先复制到内存里,然后给每一个人出题时都是在内存副本上出题(而不读写什么数据库表)。出完题之后才把很简练的结果非常轻快地写到数据库。
[解决办法]
http://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html
http://hi.baidu.com/qiandeqiande/item/2ec5d69e4446ec1a934f4157
http://database.51cto.com/art/201001/179089.htm
[解决办法]