文档章节

mysql 事务

w
 waterme
发布于 2016/07/09 23:29
字数 1299
阅读 1
收藏 0

mysql 事务 原文链接http://blog.csdn.net/w_l_j/article/details/6783319

事务

在MySQL环境中,事务由作为一个单元的一个或多个SQL语句组成。这个单元中的每一个SQL语句是互相依赖的,而且单元作为一个整体式不可分割的。如果单元的一个语句不能完成,整个单元就会回滚(撤销),所有影响到的数据将返回到事务开始以前的状态。因而,只有事务中的所有语句都成功地执行才能说这个事务被成功地执行。

事务和ACID属性

术语”ACID”是一个简称,每一个事务的处理必须满足ACID原则,即原子性(A)、一致性(C)、隔离性(I)和持久性(D)。

(1)原子性

原子性意味着每个事务都必须被认为是一个不可分割的单元

(2)一致性

不管事务是完全成功完成还是中途失败,当事务使系统处于一致的状态时存在一致性

(3)隔离性

隔离性是指每个事物在它自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只有在它完全被执行时才能看到

(4)持久性

持久性是指即使系统崩溃,一个提交的事务仍然存在

事务处理

  在sql中,当一个会话开始时,系统变量AUTOCOMMIT值为1,既自动提交功能是打开的,当用户执行一条sql语句结束后该语句对数据库的修改就立即被提交成为持久性修改保存到磁盘中,一个事务就结束了。

关闭自动提交,才能由多条SQL语句组成,使用如下语句:

SET@@AUTOCOMMIT=0;

执行此语句后必须明确地指示每个事务的终止,事务中的SQL语句对数据库所作的修改才能成为持久化修改。

delect from  xs  where  学号=’081101’;

select *  from  xs;

1、开始事务   语法格式

start transaction  |  begin work

一条begin  work语句可以用来代替start transaction 语句,但是start  transaction更常用

2、结束事务   语法格式

commit [work]  [and [no] chain] [[no]release]

可选的and  chain子句会在当前事务结束时,立即启动一个新事务,并且新事务与刚结束的事务有相同的隔离等级,release子句在终止了当前事务后,会让服务器断开与当前客户端的连接。包含no关键词可以抑制chain或commit完成

3、撤销事务

Rollback语句是撤销语句它撤销事务所做的修改,并结束当前这个事务          语法格式

Rollback [work] [and [no] chain]  [[no] release]

在前面的举例中,若在最后加上rollback  work,执行完这条语句后,前面的删除动作将被撤销,可以使用select语句查看该行数据是否还原。

4、回滚事务

除了撤销事务,用户还可以使用rollback  to语句是事务回滚到某个点,在这之前需要使用savepoint语句来设置一个保存点

savepoint语法格式如下:

savepoint identifier

其中identifier为保存点的名称

rollback to savepoint 语句会向已命名的保存点回滚一个事务。如果保存点被设置后,当前事务对数据进行更改,则这些更改会在回滚中被撤销。语法格式如下:

rollback [work] to savepoint identifier

当事务回滚到某个保存点后,在该保存点之后设置的保存点将被删除

事务隔离级

只有支持事务的存储引擎才可以定义一个隔离级。定义隔离级可以使用set transaction语句

语法格式:set [global | session] transaction  isolation level

serializable

 |repeatable  read

 |read committed

 |read uncommitted

(1)序列化:如果隔离级为序列化,用户之间通过一个接一个顺序地执行当前事务提供了事务之间最大限度的隔离。

(2)可重复读:在这一级上,事务不会被看成是一个序列。如果用户在同一个事务中执行同条select语句次数,结果总是相同的。

(3)提交读:readcommitted隔离级的安全性比repeatable read隔离级的安全性要差。在事务处理期间,如果其他事务修改了相应的表,那么同一个事务的多个select语句可能返回不同的结果

(4)未提交读:提供了事务之间最小限度的隔离。除了容易产生虚幻的读操作和不能重复的读操作外,处于这个隔离级得事务可以读到其他事务还没有提交的数据,如果这个事务使用其他事务不提交的变化作为计算的基础,然后那些未提交的变化被它们的父事务撤销,这就导致了大量的数据变化。

默认情况下,系统变量的值是基于每个会话设置的,但是可以通过set命令行添加global关键字修改该全局变量的值。

本文转载自:http://blog.csdn.net/feihongxueni/article/details/45602749

共有 人打赏支持
w
粉丝 0
博文 27
码字总数 0
作品 0
海淀
mysql 4种事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(...

蛋定龙
2015/10/23
293
0
MySQL 中基于 XA 实现的分布式事务

五、MySQL 中基于 XA 实现的分布式事务 5.1 XA协议 首先我们来简要看下分布式事务处理的XA规范 可知XA规范中分布式事务有AP,RM,TM组成: Xa主要规定了RM与TM之间的交互,下面来看下XA规范中...

阿里加多
07/07
0
0
MySQL · 源码分析 · MySQL BINLOG半同步复制数据安全性分析

半同步复制(semisynchronous replication)MySQL使用广泛的数据复制方案,相比于MySQL内置的异步复制它保证了数据的安 全,本文从主机在Server层提交事务开始一直到主机确认收到备机回复进行...

阿里云RDS-数据库内核组
2017/03/08
0
0
Mysql数据库理论基础之八--数据库事务

一、简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1、是一种数据库管理系统 2、是一种关联数据库管理系统 3、是一种开放源码软件,且有大量可用的共享MySQL软...

风过_无痕
2017/06/10
0
0
MySQL MVCC && 事务隔离级别 && 锁

MySQL MVCC && 事务隔离级别 && 锁 InnoDB多版本并发控制——MVCC http://my.oschina.net/xinxingegeya/blog/208821 MySQLS锁X锁read lockwrite lock http://my.oschina.net/xinxingegeya/bl......

秋风醉了
2014/07/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
3
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部