事务的四大特性:
1.原子性
一个事物是不可分割的数据库逻辑工作单位
2.一致性
事物完成时,必须使所有的数据都保持一致的状态
3.隔离性
一个事物的执行不能被其它并发执行的事物干扰
4.持久性
事物一旦改变,它对数据库的改变是永久性的
脏读:
指的是一个事物在访问数据的同时对数据进行了修改,但是没提交结果,也就是没有commit一下,那么,另一个事物再次访问时,读取到了修改之前的信息,而修改之前的信息是不需要了的信息
不可重复读:
指的是在一个事物内多次读取同一数据,但是在事物某次再次要读取相同的数据时,另一事物对数据进行了修改,那么,此次读到的数据将于之前的不同,这就是不可重复读
幻读:
幻读是指当事物不是独立执行时发生的现象。当一个事物对表中的数据进行了修改,修改的数据涉及到表中全部数据行,同时,第二个事物又进行了一次修改,那么以后第一个事物的用户再次操作,由于有的数据没改,就会像发生了幻觉一样。
解决的方法:
针对脏读和不可重复读,可已采取(1)在读时,给数据加上共享锁,只能大家一起读,但是不能修改,(2)在修改时,给数据加上排他锁,只有该事物对该数据类型对象进行操作,而其它的事物不能。针对幻读,给数据设置为只读就可以了。
锁的分类:
共享锁(s锁):
一个事物对数据对象建立了共享锁,则该事物可以对数据对象进行读操作,但不能进行修改,而其他的事物只能对概数据对象加s锁,但不能加x锁。即其它数据也只能进行只读操作
排他锁(x锁):
一个事物对某个数据对象建立了排他锁,那么只有该数据对象进行DML操作,而其他事物则不能,也不允许其它事物对对象家任何类型的锁。
DDL:数据定义语言(表的创建删除)
DCL:数据控制语言(用于定义数据库用户的权限)
DML:数据操作语言(数据增删查改均属于)
oracle数据库高级基础
最新推荐文章于 2024-08-02 10:05:02 发布