mysql数据库加锁问题

chishuiqingshen 2008-04-07 04:26:45
大体的逻辑是先查找符合条件的一条数据,然后对其进行修改,在此过程中会产生并发,因此使用锁。(先在task-表中查询,然后修改task-)下面是代码部分:

try
{


String lock = "lock tables task_" + paper_id
+ " write";
stmt.execute(lock);
if(Alg_Distribute.equals("00")){
//顺序分发



sql4 = "select * from task_"+paper_id+" where Que_ID = '"+Que_ID+"' and Flag_Send = 1 and (flag_submit = '"+logname+"' or flag_submit = '00' or flag_submit = '') order by Sec_ID asc limit 1";

}
else if(Alg_Distribute.equals("11")){
//随机分发
sql4 = "select * from task_"+paper_id+" where Que_ID = '"+Que_ID+"' and Flag_Send = 1 and (flag_submit = '"+logname+"' or flag_submit = '00' or flag_submit = '') order by rand() limit 1";
}
else if(Alg_Distribute.equals("22")){
//倒序分发
sql4 = "select * from task_"+paper_id+" where Que_ID = '"+Que_ID+"' and Flag_Send = 1 and (flag_submit = '"+logname+"' or flag_submit = '00' or flag_submit = '') order by Sec_ID desc limit 1";
}

ResultSet rs4 = stmt.executeQuery(sql4);
ResultSet rs_isshow = stmt.executeQuery(sql4);
rs4 = stmt.executeQuery(sql4);
rs_isshow_isEmpty = !rs4.next();
rs4.beforeFirst();

while (rs4.next()) {
Flag_Send = rs4.getInt("Flag_Send");
Tea_Send1 = rs4.getString("Tea_Send1");
Tea_Send2 = rs4.getString("Tea_Send2");
pic_Path = rs4.getString("PathPic");
Sec_ID = rs4.getString("Sec_ID");
ExamID = rs4.getString("ExamID");
}
if (Flag_Send == 1) {
String sql6 = "update task_" + paper_id
+ " set Flag_Submit= '" + logname
+ "' where Sec_ID = '" + Sec_ID
+ "'";
//************************
st.executeUpdate(sql6);
// stmt.executeUpdate(sql6);

//不知道上面的应该怎么写是用st还是stmt(在上面创建的两个statement对象)
//*********************************************

}
String unlock = "unlock tables";
stmt.execute(unlock);
");
conn.commit();
session.setAttribute("Flag_Mode_num", "11");
}
catch(Exception e)
{
if(conn!=null)
{
conn.rollback();
}
e.printStackTrace();
}
}
经常会出现下面的异常:
javax.servlet.ServletException: Lock wait timeout exceeded; try restarting transaction

程序会出现死锁,直至超时解锁。
恳请各位介绍一下如何解决并发问题
...全文
401 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shine_Panda 2008-04-26
  • 打赏
  • 举报
回复
看得好晕啊。。。。。。。。。。。。。。。
老紫竹 2008-04-07
  • 打赏
  • 举报
回复
1 按照规定的顺序获得锁

2 使用乐观锁
chishuiqingshen 2008-04-07
  • 打赏
  • 举报
回复
对于mysql数据库中需要优化的参数有哪些

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧