数据库之事务

1.事务的定义

事务就是一组数据库操作序列(包含一个或多个SQL操作命令),事务会把所有操作看作是一个不可分割的整体向数据库系统提交或者撤销操作,所有操作要么都执行,要么都不执行。

2. 事务的ACID特性

原子性

一致性

隔离性

持久性

原子性:事务管理的基础,把事务中的所有操作看作是一个不可分割的工作单元,要么都执行,要么都不执行。

一致性:事务管理的目的,保证事务开始前和事务结束后数据的完整性和一致性。

隔离性:事务管理的目的,使多个事务并发操作同一个表数据时,每个事务都有各自独立的数据空间,事务的执行不会受到其他事务的干扰,可通过设置隔离级别解决不同的一致性问题。

持久性:事务管理的结果,当事务被提交以后,事务中的命令操作修改的结果会被持久保存,且不会被回滚。

3. 隔离级别的种类

未提交读   read uncommitted  允许脏读,不可重复读 幻读

提交读       read committed   不允许脏读 ,允许不可重复读 幻读

可重复读  repeatable read   不允许脏读 不可重复读 有条件的允许 幻读(innoDB存储引擎可以不允许)

串行读     serializable          都不允许,相当于表级锁定,但是会影响数据库的读写效果和性能。

4. 如何设置隔离级别?

设置隔离级别:
set global transaction isolation level 隔离级别名称;     
#全局级别的设置,可在所有会话有效,需要重新登录才可生效
 
set session transaction isolation level 隔离级别名称;    
#会话级别的设置,在当前会话会话中立即生效
 
 
设置全局事务隔离级别:
set global transaction isolation level read committed; ##永久生效
set @@global.tx_isolation='read-committed';   #重启服务后失效
 
设置会话事务隔离级别:
set session transaction isolation level repeatable read;
set @@session.tx_isolation='repeatable-read';  #重启服务后失效

查询隔离级别

like表示模糊查询 百分号相当于通配符*的作用

查询全局事务隔离级别:
show global variables like '%isolation%';
 
查询会话事务隔离级别:
show session variables like '%isolation%';

5.事务管理操作命令

begin;             #开启一个事务
....        create database/table    insert into    update XXX set   delete from      #事务性操作
savepoint XX;      #在事务中创建回滚点
rollback to XX;    #在事务中回滚操作到指定的回滚点位置
commit; 或 rollback;    #提交或回滚结束事务

你可能感兴趣的:(数据库,oracle)