解决关于多客户端操作数据库并发问题

由于项目需要,需要根据条件每次从数据库(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了

可能还有其他更好的方法,希望知道了给点建议,请各位指点下……

posted @ 2012-06-19 10:22  冰封一夏  阅读(1881)  评论(1编辑  收藏  举报
HZHControls控件库官网:http://hzhcontrols.com