你的位置:
问答吧
-> MySQL
-> 问题详情
mysql客户端频繁到对一个表进行读取并修改,造成数据库每隔一分多钟停顿一下
我做的项目是网评,将所有到试题信息放到一张名为task的表中,其表结构如下:
create table task(flag_send int,sec_id int, pic_path varchar(50),flag_submit varchar(22),index(flag_send,flag_submit));
flag_send 插入时为1
sec_id 试卷密号
flag_submit 为指定哪个人评阅即教工号 例如:1001
当客户端抽取时根据试题时根据flag_submit=教工号 和 flag_send=1这两个条件去数据库中抽取一条记录,
在相应的提交页面中操作
1:向成绩表中提交数据
2:向评阅表中提交数据
3:更新task表,将flag_send=0,flag_submit='00'
问题:
客户端频繁的对task表操作,造成数据库每隔一段时间会停顿一下,所有到用户无法提交数据,在停顿大约2秒后一切正常,停顿特别有规律,当用户在30人时候,间隔不到两分钟出现一次,停顿2秒左右,用户数量多来,间隔时间就短来,停顿相应到增长,是有规律到。
经过分析造成这种问题到原因是频繁到对task表进行操作造成,其它的两个insert 没有问题。但是逻辑流程要求这样操作。mysql task表采用innodb的引擎,对相关到参数都进行了调优,理论上讲mysql处理这些并发应该不成问题,但是不清楚中间到停顿到底是什么愿意造成的。
请斑竹和各位朋友帮忙分析一下,谢谢。
作者: chishuiyubo
发布时间: 2009-01-07
关注。
提供信息太少了。你task表数据量多少,不知你的仔细业务逻辑是如何的,但感觉你这个索引不是很好!可以跟踪下你在抽取与更新task表时是否利用上索引呢?是否应增加字段来做个唯一索引,然后在页面利用上这个唯一索引。
[ 本帖最后由 廖猫猫 于 2009-1-8 10:17 编辑 ]
作者: 廖猫猫
发布时间: 2009-01-08
完整的信息是这样的:源代码
task_100001表结构
CREATE TABLE `task_100001` (
`ID` int(11) default NULL,
`ExamID` varchar(25) NOT NULL,
`Que_ID` varchar(10) NOT NULL,
`Sec_ID` int(4) NOT NULL auto_increment,
`PathPic` varchar(100) NOT NULL,
`Flag_Send` varchar(2) NOT NULL