锁定机制:
每个数据库的封锁机制不一样,了解工作原理才能开发出完整的应用程序。
Sybase机制:数据更新会导致其他访问都挂起,没有并行可言,速度和正确不可兼得。
Informix机制:实现行级封锁的同时,需要消耗大量的内存和时间,容易导致系统瘫痪。
Oracle机制注意点:
事务处理是数据库的全部工作,他们是好的事务。
只要有需要,就要就应该推迟提交,只在必须提交时才提交,事务应该和商务逻辑规则大小一样。
只要有需要,就应该对数据锁定,他是oracle的工具,不是要避免的东西,对oracle来说,他不是稀有资源。
oralce的行级锁定不消耗资源。
不应该无谓的扩大你的锁定范围,如:只需要行级锁定的,你使用表锁定。
丢失更新:
当以下事务发生时,如果没有使用锁定机制,将会导致丢失更新:
用户1查询数据行A
用户2查询数据行A
用户1更改数据行A,提交更改
用户2更改数据行B,提交更改
此时如果只是用简单的select,update机制,那么用户1的更新将丢失,被用户2覆盖。
悲观封锁
实现方法:在用户1发出更改意图时(选定更改行),通知oracle锁定该行(select
* from tab where id = * for update
nowait),此时会有三种情况发生:</