关于并发访问的数据同步问题 我现在准备做一个影院售票系统现在就并发访问的数据同步问题很是头疼,不知道怎么做才最好,来坛子像各位朋友求助,希望多给建议,谢谢场景描述:A、B两个售票终端,售票流程是先锁定座位,然后再售出座位。A端口和B端口同时售票时,我想用同步方法在业务流进行锁定,但是效率很低啊,耗时至少是没用同步锁的5倍,朋友们有没有更好的办法?数据库锁会不会效率高些?谢谢,我没有分了,就70分了,全部散了吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库本身就支持吧 oracle 你是B/S系统还是C/S系统? 数据库分为行锁和表锁,行锁一般都是for update,在事务中执行。保证事务原子性的 这样看可以解决不:你肯定有一张表来存储你的票资源,如果是采用的oracle数据库的话,解决方法:当你要买这张票的时候,先锁定这张票,select card from filemcard where carno='当前要买的票' for update,然后进行你后面的其他操作,这样,当你锁定了这样卡后,其他窗口就不会再来买这张票了这样操作应该可以解决吧,希望对你有帮助 锁不仅提供了对写操作的排他性,(就是在一个线程对数据进行写操作的时候,不允许其他线程同时对同一数据进行写操作),也阻止或控制了对未完成修改的数据的读操作,也叫作未提交数据。也就是写前可读,写中不可读,写完可读;读前可写,读中不可写(我不清楚有没有读中概念,如果读是一个原子操作的话,就没有读中概念,也不存在读中不可写的问题),读完可写。再看下具体操作http://www.cnblogs.com/lingmaozhijia/articles/1339222.html http://www.blogjava.net/loocky/archive/2006/11/15/81138.html! 在业务层加锁不可取现在主流的数据库都支持事务模式,加上悲观锁,更高级的不但有表锁定,还有行锁定使用COMMIT和ROLLBACK就可以了,没有必要那么麻烦!根据返回执行状态判断是否提交成功!金融级别的如ATM取款机的处理方式也不外乎这些 如果是B/S ,Oracle的话,用数据库锁吧,它本身就有这个功能了。它有行级锁和表级锁,可以满足需要了 我的数据库是MySQL,用数据库锁是不是效率很低下啊???? 谢谢,但我的数据库是MySQL的,这个性能是不是还不如用synch***关键字呢? 不会的,MYSQL数据库,你要设置为InnoDB,不然不支持事务模式!对于效率的话,那就是鱼和熊掌,每个数据库都一样,包括Oracle,MSSQL等等!不推荐在业务层同步控制!如果程序有BUG,全盘都会当掉,效率要远远低 进入事务模式,COMMIT提交更新请求,如果执行成功则返回成功状态,如果失败就会ROLLBACK,回滚到执行前状态 ssh 框架整合 请大侠相助,我hibernate盲 关于EJB struts文件上传的问题 java中的正则表达式感觉有点怪异,不太好理解,请看实际测试 hibernate入门例子的问题!! 关于------------ radio -----------的困惑 请教高人,Hibernate能不能将查询结果直接转换成xml数据呢? 请教一下大家关于数据验证的问题??? struts2的 大佬们我在安装eclipse时 出现了这样的问题,求解!! Oracle海量数据查询处理效率 关于xml的解析工具等
然后进行你后面的其他操作,这样,当你锁定了这样卡后,其他窗口就不会再来买这张票了这样操作应该可以解决吧,希望对你有帮助
http://www.cnblogs.com/lingmaozhijia/articles/1339222.html
谢谢,但我的数据库是MySQL的,这个性能是不是还不如用synch***关键字呢?
不会的,MYSQL数据库,你要设置为InnoDB,不然不支持事务模式!对于效率的话,那就是鱼和熊掌,每个数据库都一样,包括Oracle,MSSQL等等!不推荐在业务层同步控制!如果程序有BUG,全盘都会当掉,效率要远远低
进入事务模式,COMMIT提交更新请求,如果执行成功则返回成功状态,如果失败就会ROLLBACK,回滚到执行前状态