- 锁和阻塞
关于并发concurrency,和并行(parrallel)的意思是不一样的。
数据库中并发的意思是有超过两个以上的用户对同样的数据做修改,而并行的意思是说将一件事情分成很多小的部分,让每一部分同时执行,最后将执行结果汇总成最终结果。
没有并发就没有锁,锁的产生是因为并发,并发的产生是因为系统需要,系统需要是因为用户需要。
系统平时运行正常,突然体质不懂,多半是被阻塞blocked 住了,就查看V$LOCK这个视图。
- 引起阻塞的其他情况
- Select for update
使用select … for update的方式,以排他的方式获得这些需要修改行的数据,并且保证在修改完成之前,其他用户无法对这些数据进行修改。
-
- 外键没有创建索引
如果系统有主、外键引用关系,并且满足一下三个条件的任意一个,应该考虑给外键字段创建索引
- 主表上有频繁的删除操作
- 主键上有频繁的修改操作
- 业务上经常会出现主表和从表做关联查询的情况