PostgreSQL事务实现】的更多相关文章

查看更多教程:http://www.gitbook.net/postgresql/2013080567.html pgsql事务与并发控制 事务与并发控制 数据库几大特性: ACID: Atomicity:原子性:一个事务要么全部执行,要么全部不执行 Consistency :一致性:执行事务的时候,数据库从一个一致的状态变更到另一个状态 Isolation:隔离性: 确保在并发执行的时候,每个事务感觉不到其他事务在并发的执行 Durability:持久性:一个事务完成之后,即使数据库发生故障,…
事务简介 事务管理器:有限状态机 日志管理器 CLOG:事务的执行结果 XLOG:undo/redo日志 锁管理器:实现并发控制,读阶段采用MVCC,写阶段采用锁控制实现不同的隔离级别 PostgreSQL为每条事务创建一个postgre进程,并发执行事务.采用分层的机制执行事务,上层事务块和底层事务.上层事务块是用户眼中的事务,用于控制事务执行的状态:底层事务是事务中的每条语句,可以改变上层事务块的状态. 上层事务块 每个postgre进程只有一个事务块,上层事务块记录着本次事务执行过程中的各…
Table of Contents 事务的特性 并行事务的问题 事务隔离级别 Odoo事务隔离级别 odoo事务控制         事务的特性 事务4个特性,简写未ACID 原子性(Atomicity): 事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行.     一致性(Consistemcy): 事务前后,数据库的状态都满足所有的完整性约束.     隔离性(Isolation): 并发执行的事务是隔离的,一个不影响一个.如果有两个事务,运行在相同的时间内,执行相同…
PostgreSQL的并发控制机制同时实现了多版本控制MVCC协议和两阶段封锁协议.实际采用哪种协议取决于所执行的语句类型. DML语句的并发控制将使用MVCC协议: DDL语句的并发控制基于标准的两阶段封锁协议. MVCC的关键思想是维护每一行的不同版本,而不同版本对应着在不同的时间点该行的不同实例.MVCC协议确保每个事务都只看到与事务的数据库视图一致的版本的数据:每个事务看到数据的一个快照,只包含那些在事务启动时已提交的数据.这个快照并不等于数据的当前状态. 使用MVCC的目的 是让读操作…
1.事务的使用 begin;//开启关闭自动提交的事务 insert into testtab01 values(0); rollback;//事务回滚 2.SavePoint的使用 begin;//开启关闭自动提交的事务 insert into testtab01 values(0); savepoint first_savepoint;//创建事务保存点 insert into testtab02 values(1); rollback;//事务回滚 insert into testtab0…
嵌套事务的实现是基于SAVEPOINT.ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT的,也就是设置一个保存点,可以回滚到保存点和释放保存点. 测试表的初始状态如下: postgres=# \d test Table "public.test" Column | Type | Modifiers --------+---------+----------- id | integer | name | text | postgres=# select *…
2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范围,但我们会为您提供希望足够深的见解. 2.5.1 理解XLOG记录 对XLOG所做的更改是基于记录的.这意味着什么?让我们假设您在给一个表添加一行数据: test=# INSERT INTO t_test VALUES (1, 'hans'); INSERT 0 1 在这个例子中,我们正在插入一个…
2.3 理解一致性和数据丢失 挖掘PostgreSQL事务日志而不考虑一致性是不可能的.在本章的第一部分,我们已经大体上解释了事务日志的基本思想.您已经知道,无需事先的日志改变的能力,使数据处于一种好的形状是很难甚至是不可能的. 到现在为止,我们大多都在讨论崩溃的问题.因为数据文件中的条目的损坏而丢失文件是绝对不好的.但是,崩溃不是您要关心的唯一问题.另外两个重要的主题是: • 性能 • 数据丢失 虽然这可能是一个重要的主题的明显的选择,我们有这样的感觉,这两个主题都不好理解,是受尊敬的,并因此…
2.2 XLOG和复制 在本章中,您已经了解到PostgreSQL的事务日志已经对数据库做了所有的更改.事务日志本身被打包为易用的16MB段. 使用这种更改集来复制数据的想法是不牵强的.事实上,这是在每个关系(或者甚至非关系)数据库系统的发展的一个逻辑步骤.本书的其它部分,您将在许多方面看到PostgreSQL事务日志可以如何以许多不同的方法被使用,获取,存储,复制,和分析. 在大多数的复制系统中,PostgreSQL事务日志是整个体系结构(用于同步复制和异步复制)的的骨干.…
http://www.postgresql.org/about/news/1557/ 2014年12月18日,PostgreSQL全球开发小组发布PostgreSQL9.4,PostgresQL是世界领先的开源数据库.针对不同类型的数据库用户,此版本增加了许多新的特性,包括提升PostgreSQL的灵活性,可扩展性和性能,改进对JSON支持,数据复制和索引. 灵活性通过使用PostgreSQL的新JSONB数据类型,用户不再需要在关系和非关系型数据存储之间做出选择,而是二者都可以兼得. JSON…
与Walbouncer 一起工作 在本书的最后一章,将引导您通向2014年发布的一个工具,称为walbouncer.本书中的大多数技巧说明了如何复制整个数据库实例,如何分片,等等.在最后一章,是关于wabouncer的,它是所有关于过滤事务日志流来选择性地复制数据库对象从一台服务器到到一组(不一定是完全相同的)slave. 本章将涵盖以下主题: • walbouncer的基本概念 •安装walbouncer •选择性地复制数据库,表,和表空间 walbouncer 工具适用于 PostgreSQ…
Slony是PostgreSQL领域中最广泛的复制解决方案之一.它不仅是最古老的复制实现之一,它也是一个拥有最广泛的外部工具支持的工具,比如pgAdmin3.多年来,Slony是在PostgreSQL中复制数据的惟一可行的解决方案.Slony使用逻辑复制:Slony-I一般要求表有主键,或者唯一键:Slony的工作不是基于PostgreSQL事务日志的:而是基于触发器的:基于逻辑复制高可用性:PostgreSQL除了slony:还有Londiste,BDR等等后续文章会讲到 1. 安装Slony…
1.PG事务隔离级别 在数据库中,并发的操作进行读写数据时,则会遇到脏读.不可重复读.幻读.串行化异常等问题. 数据库事务的特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行; 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态.一致状态的含义是数据库中的数据应满足完整性约束; 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行; 持久性(Durabili…
到现在为止,您已经掌握了一定的理论.因为生活不仅由理论组成(它可能同样重要),是时候深入实际的工作了. 本章的目标是让您明白如何恢复数据到一个给定的时间点.当您的系统崩溃或者有人意外地删除了一个表,不重放整个事务日志,而是重放 其中的一小部分,这是非常重要的.即时恢复(PITR,Point-In-Time-Recovery)将是做这种部分事务日志重放的工具. 在本章中,您将学到关于即时恢复(PITR)的所有您需要知道的信息,并且会有实际的例子来引导您.因此,我们将应用所有您已经在第二章所学习的概…
1.3 使用分片和数据分配 本节您将了解基本可扩展性技术,例如数据库分片.分片被广泛应用于高端系统并提供一个简单而且可靠的扩展设置方式来向外扩展.近年来,分片已经成为一种扩大专业系统规模的标准方式. 1.3.1 理解分片的目的 如果您的数据量增长超过一台机器的处理能力将会发生什么事情?如果您要运行这么多的事务,一台服务器根本跟不上怎么办?我们假设您有百万级的用户,上万用户想在同一时间执行特定的任务. 显然,某些时候,您再也不能通过购买能够处理无限大的负载的足够大的服务器来解决问题.显然在单个服务…
XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置max_prepared_transactions参数,此参数用于指定分布式事务中两步提交准备事务的最大数量.默认值为0,此时不支持分布式事务. max_prepared_transactions参数值不应该小于max_connect…
原创文章,同步发自作者个人博客,http://www.jasongj.com/sql/mvcc/ PostgreSQL针对ACID的实现机制 事务的实现原理可以解读为RDBMS采取何种技术确保事务的ACID特性.PostgreSQL针对ACID的实现技术如下表所示. ACID 实现技术 原子性(Atomicity) MVCC 一致性(Consistency) 约束(主键.外键等) 隔离性 MVCC 持久性 WAL 从上表可以看到,PostgreSQL主要使用MVCC和WAL两项技术实现ACID特…
在博文<数据库并发事务控制四:postgresql数据库的锁机制 > http://blog.csdn.net/beiigang/article/details/43302947 中后面提到: 常规锁机制可以参考pg的官方手册,章节和内容见下面 13.3. Explicit Locking http://www.postgresql.org/docs/9.4/static/explicit-locking.html 这节分为:表锁.行锁.页锁.死锁.Advisory锁(这个名字怎么翻译好???…
开源数据库领域,postgresql以其优越的性能.功能及良好的稳定性排名首位可谓当之无愧,尤其是对高并发的支持可谓匠心独具.而优越的性能和稳定性,究其根本无非是良好的基础架构,本文将对其性能和稳定性有着良好支撑的事务及锁机制进行探讨,并结合实际测试,以真切说明和证明其特点. 1.可在事务中的DDL postgresql中,DDL语句可以在事务中,既可以提交,也可以回滚,这在实际工作中,不然具备很大的实际意义,也会给工作带来方便和安全,如下图所示: 2.mvcc postgresql中,很好的实…
apple=# begin; BEGIN apple=# set transaction ISOLATION LEVEL read committed ; SET apple=# select * from test; id | info ----+------- 2 | test 3 | test1 4 | test1 5 | test 6 | test 7 | test 8 | test1 9 | test1 10 | test 11 | test 1 | test 1 | test 1 |…