pgsql事务、并发、锁
1.ACID
在日常操作中,对于一组相关操作通常需要其全部成功或全部失败。在关系型数据库中,这组相关操作称之为事务。在一个事务中,多个插入、修
改、删除操作要么全成功,要么全部失败,这称为原子性,实际上一个事务除了有这个特性外,还需要有其他三个特性,“一致性”,“隔离性”
,“持久性”。将四种特性简称为“ACID”,而这四个特性也是关系型数据库中必要的特性。
原子性:事务必须以一个整体单元的形式进行工作,对于其数据的修改,要么全部执行,要么全都不执行。如果只执行事务中多个操作的前半部分
就会出现错误,那么必须回滚所有的操作,让数据在逻辑上回滚到先前的状态。
一致性:事务完成时,必须使所有的数据都保持一致状态。
隔离性:事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务是不能查看得到中间
状态的数据。
持久性:事务完成之后,对系统的影响是永久的。即使出现执行的故障系统(掉电、重启),数据也会保持一直。
在PostgreSQL中,可以使用多版本并发控制(MVCC)来维护数据的一致性。相比于锁定模型,多版本并发控制的主要优点是MVCC里对检索(读)数
据的锁请求与写数据的锁请求不冲突,读不会阻塞写,而写也从不阻塞读。在PostgreSQL里中也提供了表和行级别的锁定语句,让应用能更方便地
操作并发数据。
2.DDL事务
PostgreSQL的DDL事务可以包含在一个事务中,而且也是可以回滚的。
评论