天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
12
返回列表 发新帖
楼主: 深圳云计算

[已解决] 关于oracle问题

[复制链接]
 楼主| 深圳云计算 发表于 2013-4-18 15:01:53 | 显示全部楼层
这个不知道,就是有时候,很多人操作,多半是视图执行doupdate语句,具体的操作应该是保存视图,对视图有更新的时候,后台的,就会被锁住,然后的话,最容易被锁的是,当我的视图选择sql过滤模式,修改了sql语句之后,点击保存就容易被锁住,然后通过监控查看是,数据库正在执行update语句被锁住.不好重现.
spiral 发表于 2013-4-18 15:17:52 | 显示全部楼层
我们这边再研究一下,过段时间再回复您
spiral 发表于 2013-4-18 15:52:12 | 显示全部楼层
该问题咨询过数据库的同事后,他表示oracle的事务会自动进行锁表,第二个事务无法再对其操作
就算配置为最低级别的锁,oracle也不允许第二个事务对其进行Insert、Update、Delete的操作,直到第一个事务结束

因此我们系统最多最多也只能在保存前进行一个是否存在锁的校验,但是因为事务锁表的时间过于短,就算系统捕抓到其状态也没有多少意义
所以我们根据该情况,制作了版本控制的功能(它还能保证多开发者提交代码的维护性)
 楼主| 深圳云计算 发表于 2013-4-18 16:06:59 | 显示全部楼层
你说的那个锁表时间短,是不是说,每一次进行数据库更新等操作,会自动锁,但是执行完成之后会被解锁?
我们现在是会被锁死,必须通过数据库端去解锁.
然后目前唯一解决方案就是启动版本控制对吧?
spiral 发表于 2013-4-18 16:55:38 | 显示全部楼层
当一个事务第一次执行数据更改(Insert、Update、Delete)或使用SELECT… FOR UPDATE语句进行查询时,它即获得一个TX(事务)锁,直至该事务结束(执行COMMIT或ROLLBACK操作)时,该锁才被释放
我们知道sql语句的执行速度是微秒级别的,因此我才表示这个时间很短,几乎可以忽略

在网络上查了一下造成的死锁的原因貌似都是五花八门的,所以我们建议楼主还是使用”版本控制“的功能
 楼主| 深圳云计算 发表于 2013-4-18 17:27:34 | 显示全部楼层
ok,知道了,谢谢!
spiral 发表于 2013-4-18 17:28:46 | 显示全部楼层
好的,本帖关闭,有问题我们再联系

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 22:24

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表