解决关于多客户端操作数据库并发问题
由于项目需要,需要根据条件每次从数据库(mysql)中取出3条数据,然后在客户端对数据进行操作,大概没条会耗时5秒钟左右吧,然后再将这条数据更新回数据库。更新之后还可以再次获取,多个客户端的情况下回出现并发问题,多个客户端同时获得了相同的数据,这就会导致一条数据会被操作多次,这就牵扯到了成本问题。
经过好多天的百度,摸索,终于发现了一个个人感觉比较不错的方法,但是没有测试具体效果怎么样。
方法是:
1、在数据库中添加一个字段记录数据的最新时间,由于mysql没有毫秒,所以就干脆用字符串了,数据库添加一个变量用于标志正在操作数据
2、由于我的项目的一次性获得3条数据,所以在循环对数据操作的时候进行判断更新:
update test set sendindex=1,timeindex='" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss ffff") + "' where id=" + id + " and timeindex='" + datetimeindex + "'";
由于数据操作时间很快,所以要记录到毫秒,判断更新受影响的行数,if<=0则continue,else则 操作数据,这样就防止了并发
3、操作完成后吧数据更新回去就ok了
可能还有其他更好的方法,希望知道了给点建议,请各位指点下……
作者:冰封一夏
出处:http://www.cnblogs.com/bfyx/
HZHControls官网:http://www.hzhcontrols.cn
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git