社区
Java EE
帖子详情
请问 多进程访问同一数据库 如何锁定
neverPE
2008-05-15 03:47:26
想进行简单的协同操作, 会存在多个进程(多台机器)访问同一数据库(服务器上). 请问有没有办法实现一下需求:
当进程A操作某一行时(不是表, 是一行), 可以将其锁定, 从而进程B无法对其进行写操作. 最好B在写操作之前, 就知道改行不能写.
我尝试用Hib的session的Lock方法对某对象进行锁定, 但不管是Write还是Read, 另一进程获得的LockMode都是None. 似乎这是Hib的锁而不是数据库的.请问各位, 这种需要要怎样实现?
...全文
111
5
打赏
收藏
请问 多进程访问同一数据库 如何锁定
想进行简单的协同操作, 会存在多个进程(多台机器)访问同一数据库(服务器上). 请问有没有办法实现一下需求: 当进程A操作某一行时(不是表, 是一行), 可以将其锁定, 从而进程B无法对其进行写操作. 最好B在写操作之前, 就知道改行不能写. 我尝试用Hib的session的Lock方法对某对象进行锁定, 但不管是Write还是Read, 另一进程获得的LockMode都是None. 似乎这是Hib的锁而不是数据库的.请问各位, 这种需要要怎样实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
burningice44
2008-05-16
打赏
举报
回复
不行就锁定数据库连接
neverPE
2008-05-15
打赏
举报
回复
我测试用的表只有一条记录. 读出来查看属性是正确的. 实在找不出是什么原因了. 难道是Access不支持对行的悲观锁?
Shine_Panda
2008-05-15
打赏
举报
回复
这个锁好像是数据库的,通过for update实现, 但为什么对其他进程无效呢?
可能是其他的进程并没有访问 你 for update 的那条记录 。 就不会被锁上。
neverPE
2008-05-15
打赏
举报
回复
谢谢楼上.
我本来也是想用悲观锁, 使用ISession的方法Lock
ISession session;
session.Lock(obj, LockMode.Upgrade)
本进程内, 再获取改对象的锁定状态session.GetCurrentLockMode(obj); 确实是LockMode.Upgrade.
但是另一个进程, 就一直是LockMode.NONE
看文档, 这个锁好像是数据库的,通过for update实现, 但为什么对其他进程无效呢?
lovingprince
2008-05-15
打赏
举报
回复
你要锁定一行可以使用悲观锁,即查询的时候使用 select ... for update,在一个事务中进行操作即可。
也可以使用乐观锁,即需要个版本字段,更新一次就加一,每次更新之前做对比,即可解决。
多线程编程技术开发资料.pdf
多线程编程技术开发资料.pdf
下载 多线程编程技术开发资料 高清完整PDF版
多线程编程技术开发资料.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
memcached for window32
memcached for window 32位系统,mem版本为1.4.5,其中的几个bat文件,注意需要修改install.bat中的binPath参数。
多进程
连接mysql_
多进程
多线程
访问
数据库
多进程
多线程
访问
数据库
如何让
多进程
多线程
访问
数据库
,而不会选择相同的数据,这在设计分布式程序的时候经常用到,多台机器的多个进程,每个进程都有多个线程,每个线程要从
数据库
里取数据来处理,要实现不能漏取数据,也不能重复取数据,这里给出答案创建一个数据表,如下,一个自增列,一个表示rss链接地址CREATETABLE[dbo].[Rss_RssSources]([SourceId][int]IDENTI...
解决sqlite3
多进程
访问
下会出现database lock错误
查询sqlite3官方网站得知sqlite3支持多个进程
访问
同一
个
数据库
文件, 但是实际测试下来发现执行语句报SQLITE_LOCKED错误 查资料后发现, sqlite默认发现
数据库
locked后不会等待, 重试, 而是直接返回错误。 解决办法1: 在执行语句前后设置全局sem(信号量), 确保语句顺序执行 解决办法2: 利用sqlite3自带的timeout_handler(...
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章