浅析PostgreSQL事务处理机制

转载 2015年07月08日 10:01:11

1、Q:PostgreSQL中DDL支不支持事务?

A:支持。PostgreSQL中对DDL的处理方式和普通的DML类似,也是支持事务的

 

2、 Q:PostgreSQL中对BLOB数据的处理支不支持事务?

A:支持。对BLOB(bytea或large object)数据的事务处理和普通数据的差别不大,但由于BLOB数据较大涉及BLOB的事务会产生很大的WAL日志文件。

 

3、Q:PostgreSQL中很大的数据,比如BLOB如何在数据页面中存储?

A:默认数据页面的大小是8K,当有很大数据时可能导致一个页面放不下整个数据行。针对这种情况,PostgreSQL采取一种叫做TOAST的技术,对于比较大的列只在行中放一个类似指针的东西,完整的数据放在另一个单独的TOAST表中。在TOAST表中数据被切割成若干个chunk,每个chunck以一个数据行的形式存放。

 

4、Q:PostgreSQL中可重复读和可串行化隔离级别都不会出现幻读那它们的区别是什么?

A: 根据SQL规约,能够回避幻读就已经满足了“可串行化”隔离级别的要求。但是SQL规约定义的“可串行化”并不是严格意义上的可串行化,仅仅能回避幻读不等于可以把并发执行的几个事务转化为几个事务严格按某个顺序先后执行 。PostgreSQL中的可重复读可以回避幻读但不是严格意义上的可串行化,但是可串行化就是。顺便说一下,Oracle中的可串行化也不是严格意义上的可串行化,实际上它等价于PostgreSQL中的可重复读。

 

5、Q:PostgreSQL中事务ID分配完了怎么办?

A:从头开始重新分配(实际上从3开始重新分配,0,1,2已做为特殊用途,这称之为事务回卷)。但这样可能形成事务ID冲突的问题,PostgreSQL中解决这个问题的措施有两个。第一,定期清理留在数据文件中的过老的事务ID,将它们统一设置为一个特殊值(2),在做事务新旧比较时,这个特殊的事务ID永远比其他普通的事务ID旧。这就保证了系统中事务ID的范围跨度不会过大。第二,在做事务新旧比较时不是简单的比较两个事务ID的算数值大小,而且考虑到了特殊事务ID和事务回卷的情况。比如根据内部的比较规则,无符号INT类型的事务ID 0x00000005比0xFFFFFFFF新。因为第一个措施已经保证了系统中事务ID间的跨度不会过大(不超过2^31),所以0x00000005一定是事务ID回卷后的结果而0xFFFFFFFF还没有发生回卷(或者说比0x00000005少回卷一次)。


相关文章推荐

Postgresql 事务的提交与回滚

用过oracle或mysql的人都知道在sqlplus或mysql中,做一个dml语句,如果发现做错了,还可以rollback;掉,但在PostgreSQL的psql中,如果执行一个dml,没有先运行...

Postgresql 事务的提交与回滚

原博客  http://blog.csdn.net/kiwi_kid/article/details/50881919 用过oracle或mysql的人都知道在sqlplus或mysql中,做一...

postgresql 事务级别

Postgresql是一个基于多版本并发控制实现的数据库.事务隔离级别标准的事务隔离级别包括: 1. 读未提交 2. 读已提交 3. 可重复读 4. 序列化在正式的postgresql...
  • scugxl
  • scugxl
  • 2016年04月12日 00:12
  • 1917

postgresql vacuum操作

PostgreSQL数据库管理工作中,定期vacuum是一个重要的工作. vacuum的效果:     1.1释放,再利用 更新/删除的行所占据的磁盘空间.      1.2更新...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

浅析PostgreSQL事务处理机制

  • 2016年07月05日 13:55
  • 1.29MB
  • 下载

浅析PostgreSQL事务处理机制

以ACID为特征的事务是关系数据库的一项重要的也是基本的功能。了解事务的实现原理不仅对数据库产品本身的开发,对使用数据库的应用程序的开发也有一定的益处。因此本次以PostgreSQL为对象简单介绍了其...
  • permike
  • permike
  • 2017年01月24日 15:30
  • 139

C# 事务处理机制

  • 2010年09月08日 18:33
  • 152KB
  • 下载

JDBC事务处理机制探秘

  • 2012年04月10日 09:55
  • 19KB
  • 下载

浅析数据库中事务处理

转自:http://database.ctocio.com.cn/tips/181/8533681.shtml 一 什么是事务   事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMM...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅析PostgreSQL事务处理机制
举报原因:
原因补充:

(最多只允许输入30个字)