应用程序什么情况下会造成oracle死锁,如何解决?
oracle死锁我理解就是两个用户操作同一张表,一个用户修改了,还没有提交,另一个用户也去修改了,会造成等待。
由于没有高并发经验,还真不太清楚实际环境中,什么情况会出现死锁,出现了,怎么解决,以后怎么避免?
假如一个定时程序批量插入一张表,需要一个小时,这时其他用户来访问这张表了怎么办?
求指点,谢谢!!!
------解决思路----------------------同一时间操作同一张表的同一条记录,同一条记录,同一条记录,重要的事情要说三遍
------解决思路----------------------数据库的锁有表锁,和行锁。插入表,是锁定新插入的行。
其它用户“访问”分集中情况:增加,删除,修改,查询。
增加:如过表上有唯一约束,需要等前面的事务完成好才能提交事务。否则无需等待事务。
删除:无需等待前面事务提交。(但是前面插入的数据还没有提交,读取不到也无法删除)
修改:无需等待前面事务提交。(但是前面插入的数据还没有提交,读取不到也无法修改)
查询:无需等待事务。(查询不到未提交的数据)