欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle数据库-事务和锁

程序员文章站 2024-01-14 08:48:46
...

问答题

1、什么是事务?简述事务的基本特征。

数据库事务是指一个对数据库读写的操作序列,这个操作只有两种状态,执行或不执行,
不存在执行其中的部分后停止,如果一个操作序列具有这样的性质,我们称这个操作序列为事务 。

四个特性:ACID 原子性(atomicity):事务必须以一个整体单元的形式工作,对于数据的修改要么全部执行,要么全部不执行;
一致性(consistency):事务在完成时,必须使所有的数据都保持一致状态。比如a+b=10,当a改变时,b也将改变;a+b=10不变。
隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability):事务完成后,对系统的影响是永久的,即便之后机器重启,断电,数据也将一致保持

2、COMMIT语句和ROLLBACK语句各有何功能

commit是提交事务,即提交某个事务的所有操作
rollback是回滚事务,即撤销某个事务中的已执行的操作

3、保存点的作用是什么?怎样设置?

保存点(SAVEPOINT)是事务处理过程中的一个标志,与回滚命令(ROLLBACK)结合使用。
作用:保存点可以回退到事务的一部分,我们在操作数据库的过程中可以对事务分隔为几个部分,
在操作失误的时候就可以回滚到某个点即可。
在事务中任何地方都可以设置保存点,设置保存点使用savepoint实现

-- 创建保存点
savepoint updateAdmin;
-- DML(Data Manipulation Language-数据库操纵语言) 语句
update user_info set pswd=12341 where user_id='admin';
-- 回滚到保存点之前的状况
select * from user_info;
-- 回滚到保存点
rollback to savepoint updateAdmin;
-- 回滚到保存点的状况
select * from user_info;
-- 总是提交与其最近的保存点
commit work;

4、什么是并发事务?什么是锁机制?

Oracle数据库支持多个用户同时对数据库进行并发访问,每个用户都可以同时运用自己的事务,这种事务称为并发事务。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。

5、什么是死锁?怎样防止死锁?

当两个事务并发执行时,各对一个资源加锁,并等待对方释放资源又不释放自己加锁的资源,这样就会造成死锁。
防止死锁的发生是解决死锁最好的方式,用户需要遵循如下原则
(1)尽量避免并发的执行修改数据的语句。
(2)要求每个事务一次就将所有要使用的数据全部枷锁,否则就不予执行。
(3)预先规定一个枷锁顺序,所有的事务都按该顺序对数据进行加锁。
(4)每个事务的执行时间不可太长,尽量缩短事务的逻辑处理过程,及早地提交或回滚事务。
(5)一般不建议强行加锁。