首页 > IT职业 > > PostgreSQL数据库事务实现方法分析
本文实例讲述了PostgreSQL数据库事务实现方法。分享给大家供大家参考,具体如下:
事务简介
事务是所有数据库系统的一个基本概念。 一次事务的要点就是它把多个步骤捆绑成了一个单一的,不成功则成仁的操作。 其它并发的事务是看不到在这些步骤之间的中间状态的,并且如果发生了一些问题, 导致该事务无法完成,那么所有这些步骤都完全不会影响数据库。PostgreSQL为每条事务创建一个postgre进程,并发执行事务。采用分层的机制执行事务,上层事务块和底层事务。上层事务块是用户眼中的事务,用于控制事务执行的状态;底层事务是事务中的每条语句,可以改变上层事务块的状态。
上层事务块
每个postgre进程只有一个事务块,上层事务块记录着本次事务执行过程中的各个状态。
常见的事务块状态转换图
底层事务
底层事务是需要执行的每条命令,负责处理资源和锁的获取和释放,信号的处理,日志记录等等
主要有四个函数:
分布式事务
PostgreSQL提供了分布式事务中的,两阶段提交的接口
并发控制
PostgreSQL采用MVCC的方式进行并发控制,每个事务看到的是一段时间前的数据快照。同时,MVCC并不能够解决所有问题,所以也提供了行级和表级的锁。
标准的事务隔离级别有4个,而PostgreSQL只实现了读已提交和可串行化。
锁
PostgreSQL实现了8种锁(可怕)
太多了,就记住几个吧。
加锁的对象
死锁处理
MVCC
关键词:
cmin:插入该元组的命令在插入事务中的命令标识(从0开始累加)cmax:删除该元组的命令在插入事务中的命令标识(从0开始累加)ctid:相当于rowid , <数据块ID,偏移量>XID:事务IDXid_snapshot:当前系统中未提交的事务CLOG:事务状态日志(已提交的日志)
隔离级别
数据可见性判断
多行数据需要过期版本回收
日志
希望本文所述对大家PostgreSQL数据库程序设计有所帮助。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/36/viewspace-3156284/ ,如需转载,请注明出处,否则将追究法律责任。