加锁进行数据库更新
来源:互联网 发布:上海的人工智能企业 编辑:程序博客网 时间:2024/05/23 12:48
首先,多用户并发修改同一条记录时,肯定是后提交的用户将覆盖掉前者提交的结果了。
这个直接可以使用加锁机制去解决,乐观锁或者悲观锁。
乐观锁,就是在数据库设计一个版本号的字段,每次修改都使其+1,这样在提交时比对提交前的版本号就知道是不是并发提交了,但是有个缺点就是只能是应用中控制,如果有跨应用修改同一条数据乐观锁就没办法了,这个时候可以考虑悲观锁。
悲观锁就是直接在数据库层面将数据锁死,类似于oralce中使用select xxxxx from xxxx where xx=xx for update,这样其他线程将无法提交数据。
除了加锁的方式也可以使用接收锁定的方式,思路是在数据库中设计一个状态标识位,用户在对数据进行修改前,将状态标识位标识为正在编辑的状态,这样其他用户要编辑此条记录时系统将发现有其他用户正在编辑,则拒绝其编辑的请求,类似于你在操作系统中某文件正在执行,然后你要修改该文件时,系统会提醒你该文件不可编辑或删除。
另外,我想你说的并发应该是我前面介绍的内容,但是实际上的并发并非如此,还有线程的并发问题,有多个线程同时访问一个方法,前一个线程尚未执行完成时,第二个线程进入到方法中执行,将可能导致方法中定义的某些变量的值发生改变,这样第二个线程的执行结果将会不可预期,这种一般发生在并发量非常高的应用中,解决的办法是进行线程同步,但是这个方法对性能的开销非常大,另一种方式可以使用线程排队,具体问题你可以google下,很多相关介绍,这边就只提供一个思路,不再啰嗦了。
- 加锁进行数据库更新
- 数据库加锁 如何对行 表 进行加锁
- 数据库加锁
- 怎样用SQL语句对数据库表进行加锁和解锁?
- 怎样用SQL语句对数据库表进行加锁和解锁?
- 采用java和数据库两种方式进行加锁
- 游标加锁更新数据
- 数据库加锁的知识
- 数据库加锁小结
- 数据库加锁的知识
- 数据库加锁问题
- java 对文件进行加锁
- 对Lu模块进行加锁
- 用redis SETNX进行加锁
- Yii model进行数据库数据更新
- mysql数据库更新错误进行恢复
- javaweb访问数据库进行查找更新
- MyBatis中进行批量更新(MySQL数据库)
- Spring使用序列Sequence的两种方法
- 文本框输入信息
- Request与Response
- js 弹框刷新父页面 ajax异步登录
- ios开发——新浪微博客户端
- 加锁进行数据库更新
- 跳开验证码进行攻击
- 在android的webview中 javascript与java代码互相调用
- 安全校验验证码并避免绕开验证码攻击
- Android手机安装busybox步骤
- android实时视频传输方案总结
- NSThread和dispatch_async用法和区别
- oracle中访问不同用户中的表时怎么办
- Qt 绘图