文档章节

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简介以及二进制程序方式安装

数据的组织结构 层次型 网状型 关系型 使用DBMS的优点 1,数据管理独立性; 2,有效的完成数据存取; 3,保证数据完整性和安全性; 4,数据的集中管理; 5,并发存储与故障恢复; 6,减少应用...

茳芏
2014/06/24
0
0
Mysql数据库理论基础之八--数据库事务

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

风过_无痕
2017/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sentry使用

Sentry使用 以django为例.实际上sentry本身文档已经有介绍了.这里只是再总结 1、全局异常捕获 此方法可以全局捕获任何的异常(甚至包括你自己raise的异常),在实际使用过程中不太推荐.但胜在快...

_Change_
23分钟前
1
0
linux系统包管理工具详解 yum rpm apt-get pip wget

在Linux系统下,根据系统版本的不同会有各种各样的包管理工具,下面就简单的梳理一下这几种安装命令. 1、yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora、RedHat、CentOS中的...

huoyoung
26分钟前
1
0
阿里巴巴Dubbo实现的源码分析

1. Dubbo概述 Dubbo是阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及作为SOA服务治理的方案。它的核心功能包括: #remoting:远程通讯基础,提...

别打我会飞
27分钟前
6
0
tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

tomcat 6的Connector配置如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads......

为了美好的明天
30分钟前
3
0
阿里P9架构师谈:高并发网站的监控系统选型、比较、核心监控指标

在高并发分布式环境下,对于访问量大的业务、接口等,需要及时的监控网站的健康程度,防止网站出现访问缓慢,甚至在特殊情况出现应用服务器雪崩等场景,在高并发场景下网站无法正常访问的情况...

架构师springboot
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部