查看更多教程:http://www.gitbook.net/postgresql/2013080567.html

pgsql事务与并发控制

事务与并发控制

数据库几大特性:

ACID:

Atomicity:原子性:一个事务要么全部执行,要么全部不执行

Consistency :一致性:执行事务的时候,数据库从一个一致的状态变更到另一个状态

Isolation:隔离性: 确保在并发执行的时候,每个事务感觉不到其他事务在并发的执行

Durability:持久性:一个事务完成之后,即使数据库发生故障,他对数据库的改变应该永久的保存在数据库中。

并发引起的现象

  • 脏读:一个事务读取了第二个事务的已经修改但是未提交的数据
  • 不可重复读:一个事务第一次读取数据之后,被读取的数据被另一个已提交的事务进行了修改,事务再次读取这些数据时候发现数据已经被另外一个事务所修改,两次查询不一致
  • 幻读:一个事务的两次结果集记录数不一致(特殊的不可重复读)
  1. 查看数据库的隔离级别操作
  • 查看全局事务级别
    select name,setting from pg_settings where name = 'default_transaction_isolation'
  • 修改全局事务隔离级别
    alter system set default_transaction_islation to 'REPEATABLE READ';select pg_reload_conf();select current_setting('transaction_isolation');
  • 查看当前会话的事务隔离级别
    show transaction_isolcation;
  • 设置当前事务的事务隔离级别
    start transaction isolation level READ UNCOMMITED;
  • start TRANSACTION    select xxxx
  • END

事物是如何开始的?

1、每条SQL语句就是一个事物。「自动提交模式」

2、直到用户执行commit或rollback为止作一个事务。

2.1、事务开始 sql server 、Postgresql 是下面方式:

Begin transaction ;

Update student set name=‘teddy’ where id=3 ;

Update student set age=‘13’ where id=3 ;

Commit ;———>提交处理

2.2、事务开始 mysql 是下面方式:start  transaction ;

start transaction ;

Update student set name=‘teddy’ where id=3 ;

Update student set age=‘13’ where id=3 ;

Commit ;———>提交处理

事务回滚例子:

begin transaction ;

Update student set name=‘teddy’ where id=3 ;

Update student set age=‘13’ where id=3 ;

rollback ;———>取消处理

创建表:create table student ( student_id integer , name varchar(12),sex varchar(12),age integer);

插入数据:insert into student values(1,'teddy','man',25),(2,’Tony’,’man',27)(3,’lida’,’man',25);

更新数据:Update student set name=‘teddy’ where id=3 ;

查询:select*from student;

删除数据: delete from student where student_id=1;  —————>  只删除数据,表还存在。

删除表:drop table student;——————————————>表和数据都删除了。

删除视图:drop view aa_view_test;

创建视图:create or replace view

aa_view_test          ——>视图名

(name  , age)          ——>视图里的字段

as

select name ,age from student;

EXIST OR  NOT EXIST:是否存在

select name ,age from  student_a as A

where exist (select *from student_b. as B);

case用法:

case  type

when ‘a’ then ‘一级’

when ‘b’ then ‘二级’

when ‘c’ then ‘三级’

else ‘其他’ end  as  类型

对集合的操作:

Union all  全部数据加起来「包含重复」

select *from student1

union all

select *from student2;

Intersect-----选取公共部分

select *from student1

Intersect

select *from student2;

except 记录减法

select *from student1

except

select *from student2;

postgresql事务的更多相关文章

  1. PostgreSQL事务实现

    事务简介 事务管理器:有限状态机 日志管理器 CLOG:事务的执行结果 XLOG:undo/redo日志 锁管理器:实现并发控制,读阶段采用MVCC,写阶段采用锁控制实现不同的隔离级别 Postgre ...

  2. Odoo 后端数据库postgreSQL事务级别

    Table of Contents 事务的特性 并行事务的问题 事务隔离级别 Odoo事务隔离级别 odoo事务控制         事务的特性 事务4个特性,简写未ACID 原子性(Atomicit ...

  3. PostgreSQL 事务管理的MVCC

    PostgreSQL的并发控制机制同时实现了多版本控制MVCC协议和两阶段封锁协议.实际采用哪种协议取决于所执行的语句类型. DML语句的并发控制将使用MVCC协议: DDL语句的并发控制基于标准的两 ...

  4. postgresql - 事务

    1.事务的使用 begin;//开启关闭自动提交的事务 insert into testtab01 values(0); rollback;//事务回滚 2.SavePoint的使用 begin;// ...

  5. PostgreSQL事务特性之嵌套事务

    嵌套事务的实现是基于SAVEPOINT.ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT的,也就是设置一个保存点,可以回滚到保存点和释放保存点. 测试表的初始状态如下: ...

  6. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)

    2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范 ...

  7. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(3)

    2.3 理解一致性和数据丢失 挖掘PostgreSQL事务日志而不考虑一致性是不可能的.在本章的第一部分,我们已经大体上解释了事务日志的基本思想.您已经知道,无需事先的日志改变的能力,使数据处于一种好 ...

  8. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(2)

    2.2 XLOG和复制 在本章中,您已经了解到PostgreSQL的事务日志已经对数据库做了所有的更改.事务日志本身被打包为易用的16MB段. 使用这种更改集来复制数据的想法是不牵强的.事实上,这是在 ...

  9. PostgreSQL的9.4已经发布(译)

    http://www.postgresql.org/about/news/1557/ 2014年12月18日,PostgreSQL全球开发小组发布PostgreSQL9.4,PostgresQL是世界 ...

随机推荐

  1. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  2. 阿里云弹性容器实例产品 ECI ——云原生时代的基础设施

    阿里云弹性容器实例产品 ECI ——云原生时代的基础设施 1. 什么是 ECI 弹性容器实例 ECI (Elastic Container Instance) 是阿里云在云原生时代为用户提供的基础计算 ...

  3. 看看.NET Core几个Options的简单使用

    前言 配置,对我们的程序来说是十分重要的一部分.或多或少都会写一部分内容到配置文件中去. 由其是在配置中心(Apollo等)做起来之前,配置文件一定会是我们的首选. 在.NET Core中,习惯的是用 ...

  4. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  5. 多线程Thread,线程池ThreadPool

    首先我们先增加一个公用方法DoSomethingLong(string name),这个方法下面的举例中都有可能用到 #region Private Method /// <summary> ...

  6. [Linux] scp本地服务器和远程服务器拷贝文件

    上传本地文件到服务器scp 本地路径 用户名@远程服务器ip:远程路径 下载文件 scp 用户名@远程服务器ip:远程路径 本地路径-r 是上传下载本地目录到远程 远程文件

  7. 解决java web中safari浏览器下载后文件中文乱码问题

    解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...

  8. [leetcode](4.21)4. 有效子数组的数目

    给定一个整数数组 A,返回满足下面条件的 非空.连续 子数组的数目: 子数组中,最左侧的元素不大于其他元素. 示例 1: 输入:[1,4,2,5,3] 输出:11 解释:有 11 个有效子数组,分别是 ...

  9. 面向对象的一小步:添加ActiveRecord的Scope功能

    问题场景 我们用Yii2的ActiveRecord功能非常的方便,假如我们有个Model叫Student,那么ActiveQuery可以通过这种方式轻便地获得: $query = Student::f ...

  10. OpenTK学习笔记

    OpenGL定义 OpenGL被定义为"图形硬件的一种软件接口".实质上是3D图形和模型库,具有高度可移植性,具有非常快的速度. OpenGL架构 术语pipeline常用于阐述彼 ...