文档章节

mysql 事务

w
 waterme
发布于 2016/07/09 23:29
字数 1299
阅读 1
收藏 0
点赞 0
评论 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
Oracle和mysql的区别

一、数据库的主要类型 数据库类型主要可分为:网状数据库、关系数据库、树状数据库、面向对象数据库。在商业中最主要的是关系型数据库,例如:Oracle、DB2、Sybase、My SQL Server、Informa...

lampit凌宇
2017/06/20
0
0
MYSQL 数据丢失讨论

1. 概述 很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下,各种原因导致MySQL会丢失部分数据。本文不讨论Oracle和MySQL的优劣,仅仅关注MySQL...

鉴客
2013/04/09
2.5K
7
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
MySQL简介以及二进制程序方式安装

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

茳芏
2014/06/24
0
0
MySQL · 引擎特性 · MySQL内核对读写分离的支持

读写分离的场景应用 随着业务增长,数据越来越大,用户对数据的读取需求也随之越来越多,比如各种AP操作,都需要把数据从数据库中读取出来,用户可以通过开通多个只读实例,将读请求业务直接...

db匠
01/24
0
0
高并发 数据库操作比如插入,修改等解决办法

一般没有办法就是直接操作 数据库了,所以才需要分布式mysq等,必须有事务。但是如何并发太大还是不够的,解决方案:原子计数器---技术-- redis/noSQL记录用户行为消息--分布式MQ消费消息并落...

之渊
2016/08/07
454
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
43分钟前
11
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部