Fork me on GitHub

使用oracle数据库,多用户同时对一个表进行增加,删除,修改,查看等操作,会不会有影响?

1.问题:各操作间或者性能上会不会有影响?
如果有该如何解决?

多用户操作的影响主要是回锁定记录,oracle数据库提供行级锁,也就是说用户操作数据时,oracle为记录行加锁,当然如果用户一次性操作的数据过多,oracle的锁资源过大,或者锁定数据长时间没有释放(例如几百万条记录更新移植没有提交)。oracle的资源不够,回升级为表锁。
至于性能,仍然跟锁定的资源大小有关系。
多用户操作的解决方法:
一次更新量不要太大,记得及时提交结果,养成sql语句后面立即commit或者rollback的习惯。(我们以前有个非常搞笑的同时,数据处理报错先在前台页面弹窗提示,等操作人员点了确认才提交或者回滚,结果操作人员一看见弹窗就打电话咨询去了,事务几个小时都没提交)
多人操作表是有加锁的 也就是表是共享的 行是独占的 你正在操作的行别人只能查 不能一起做修改的操作 你commit或rollback之后就会释放锁别人就可以操作了.
oracle并发可以解决这个问题,只要在增、删、改时记得及时commit或rollback就行了.

2.两个用户同时对一个表进行增加操作,是不是要等一个增加完之后另一个才可以执行增加操作啊?
   一个用户加数据,如果加完数据立即做事务处理,另一个用户就不用太久等待,甚至可能没有感觉,再如果一个用户加数据加锁后不做事务处理,那另一个用户就会一直等待,直到第一个用户commit后才可以执行第二个用户的操作.
1 oracle的数据模式是:用户建在表空间上,表建在用户上
2 一个用户的表就象自己的私有财产一样,没有自己或管理员授权别的用户是不能查询或修改的;
3 对于不同用户下的同名表,都是独立的数据对象,如user1.table1和user2.table1是相互独立的,用户分别操作自己的表是不影响其他用户的;
4 对于同一用户下的同一个表,所有有权限的用户对其进行数据操作时,是会相互影响的,如对user1.table1来说,user1修改了它的一行,user2又对该表的该行进行了修改,那么该表的该行的实际内容是在user1修改后基础上user2修改的结果(注意,所有修改以最后成功提交修改请求的用户的内容为准),多个用户对同一个用户下的同一个表的同时修改和锁定会造成锁等待

posted on 2016-03-25 18:05  HackerVirus  阅读(13401)  评论(0编辑  收藏  举报