pg事务

来源:互联网 发布:手机视频会议软件 编辑:程序博客网 时间:2024/04/28 05:49

1,为什么使用事务:对数据进行多次增删改后,如果要保证所有的操作同时成功,或者同时失败,必须使用事务。

2,什么是事务:事务是业务上的一个逻辑工作单元,能够保证对数据所有的操作,要么全部成功,要么失败。

3,原理:主要依赖于日志,如果食物没有完成,则日志中没有结束标记,数据库就会执行前面各步的反向操作。

4,特征:ACID原子性,一致性,隔离性,持久性

5,如何使用事务:只说pgsql

begin;

sql1;

sql2;多次数据操作

commit;

解释:执行不成功时,数据库将会自动执行rollback

6,结束事务:

确认修改:commit;

撤销修改:rollback;

7,局部回滚或局部提交:

利用事务保存点savepoint a;rollback to  savepoint  a;表示保存点以后的所有数据操作取消。

8,在事务结束以后,在执行commit和rollback是没有用的。

9,提交模式:

自动提交:autocommit=on;这种模式下是无法支持事务的;

手动提交:autocommit=off;必须执行commit才能提交。

10,事务隔离级别:从低到高,并发性由高到低:

未提交读:一个事务可以读到其他事务未提交的数据。

提交读:一个事务只能读到其他事务已经提交的数据。

可重复读:一个事务中,不管数据有没有被其他事务修改,读到的数据都是不变的。

串行读:一个事务要操作数据,必须要等到其他事务结束才能访问,包括查询。

set transaction isolation level设置事务隔离级别

传统的数据库有四个隔离级别

隔离级别
脏读(Dirty Read)
不可重复读(NonRepeatable Read)
幻读(Phantom Read)
读未提交(Read uncommitted)
可能
可能
可能
读已提交(Read committed)不可能可能可能可重复读(Repeatable read)不可能不可能可能可串行化(Serializable )不可能不可能不可能

但是在内部,实际上只有两种独立的隔离级别,分别对应读已提交和可串行化。



0 0