前言

继上次技术分享后,学到了关于mysql事务的许多新知识,感觉还是蛮有收获的。后来反过来想想,这些东西其实我们都接触过,最起码在自学考试的数据库系统原理那本书里面对事务的讲解,在里面就提到了事务的概念。

内容

1、首先事务本身有四个特性,分别是怎么体现的呢?

定义:

是构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不进行。

特性(ACID)

性质(ACID) 理解内容 由谁来实现
原子性(Atomicity)   一个事务对数据库的所有操作,是一个不可分割的工作单元。这些操作要么全部执行,要么什么也不做。 由DBMS的事务管理子系统来实现。
一致性(Consistency) 一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。

由DBMS的完整性子系统执行测试任务。

隔离性(Isolation) 在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。

由DBMS的并发控制子系统实现的。

持久性(Durability) 一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中,不会丢失。

由DBMS的恢复管理子系统实现的。

1、数据库的并发控制带来的问题


丢失更新


读脏数据

③ 不可重复读

2、针对上面的问题,推出了三级封锁协议(X锁、S锁),分别在不同程度上解决了并发操作带来的问题,为并发操作的正确性提供了一定的保证。虽然在不同程度上解决了并发操作带来的问题,但是这种操作很容易造成饿锁、死锁、活锁。

3、所以在后期对事务的存取模式(Access Mode)和隔离级别(Isolation
Level)进行了调整,以控制事务的并发进行。


存取模式:

i.  READ ONLY(只读型):事务对数据库的操作只能是读操作。

ii. 
READ WRITE(读写型):事务对数据库的操作可以是读操作,也可以是写操作。


隔离级别(级别从高到低):

i.  SERIALIZABLE(可串行化):允许事务与其他事务并发执行,但系统必须保证并发调度是可串行化,不致发生错误。

ii.  REPEATABLE READ(可重复读):只允许事务读已提交的数据,并且在两次读同一个数据时不允许其他事务修改此数据。

iii. 
READ COMMITTED(读提交数据):允许事务读已提交的数据,但不要求“可重复读”。

iv.   READ UNCOMMITTED(可以读未提交数据):允许事务读已提交或未提交的数据。

上述四种级别可以用下列SQL定义:

<span style="font-family:KaiTi_GB2312;font-size:18px;color:#0D0D0D;background:white;">
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED</span>

小结

上面介绍了事务的由来,以及为了解决什么而存在。

感谢您的宝贵时间···

SQL事务对并发处理的支持的更多相关文章

  1. SQL事务隔离级别

    数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修 ...

  2. 【概念原理】四种SQL事务隔离级别和事务ACID特性

    摘要: SQL事务隔离级别和事务的ACID特性 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性.   事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UNCOMMITTED.R ...

  3. 030.[转] sql事务特性

    sql事务特性简介 pphh发布于2018年10月5日 Sql事务有原子性.一致性.隔离性.持久性四个基本特性,要实现完全的ACID事务,是以牺牲事务的吞吐性能作为代价的.在有些应用场景中,通过分析业 ...

  4. [转帖]微软 SQL Server 2008/R2 停止支持

    微软 SQL Server 2008/R2 停止支持 微软停止支持 SQLSERVER 2008R2 https://t.cj.sina.com.cn/articles/view/3172142827 ...

  5. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  6. SQL汉字转拼音函数-支持首字母、全拼

    SQL汉字转拼音函数-支持首字母.全拼 FROM :http://my.oschina.net/ind/blog/191659 作者不详 --方法一sqlserver汉字转拼音首字母 --调用方法 s ...

  7. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  8. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  9. sql事务的调用

    一.数据库的SQL USE [Text]GO/****** Object: StoredProcedure [dbo].[mon] Script Date: 2017-01-03 15:59:28 * ...

随机推荐

  1. 对oracle中date/timestamp的操作

    设置oracle中date的会话格式为 'yyyy-mm-dd hh24:mi:ss' alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss ...

  2. 蓝桥杯 算法训练 ALGO-145 4-1打印下述图形

     算法训练 4-1打印下述图形   时间限制:1.0s   内存限制:256.0MB 问题描述 使用循环结构打印下述图形,打印行数n由用户输入.打印空格时使用"%s"格式,向pri ...

  3. clone对象的克隆

    用一句简单的话来说就是浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针. 等多 http:/ ...

  4. java代码。从键盘输入次数。可控制的

    总结:把一碗水端平,本来水就不多. package com.b; import java.util.Scanner; //想办法用数组.一次性,多个的输出分解质因数 public class fa4 ...

  5. PAT 垃圾箱分布(30分)dijstra

    垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾 ...

  6. c++ 图解快速排序算法

    第一.算法描述 快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法, 快速排序算法是采用分治思想的算法,算法分三个步骤 从数组中抽出一个元素作 ...

  7. maven依赖的添加

      maven可是个管理jar依赖的好玩意,不用再关心导这个jar包那个jar包,这个jar包是谁家的,和谁有啥关系.有了maven,简简单单就搞定,下面以eclipse为例,在一个springboo ...

  8. Windows平台上通过git下载github的开源代码

    常见指令整理: (1)检查ssh密钥是否已经存在.GitBash. 查看是否已经有了ssh密钥:cd ~/.ssh.示例中说明已经存在密钥 (2)生成公钥和私钥 $ ssh-keygen -t rsa ...

  9. java如何从cmd运行并使用text文件作为输入源的总结

    大家好,好几天没写东西了,又和大家见面了 首先,编译我们的.java文件,生成.class文件 使用命令 javac yourname.java 编译 然后使用java youname < yo ...

  10. Codeforces #505(div1+div2) D Recovering BST

    题意:给你一个升序的数组,元素之间如果gcd不为1可以建边,让你判断是否可以建成一颗二叉搜索树. 解法:dp,首先建图,然后进行状态转移.因为如果点k左端与i相连,右端与k相连,则i和k可以相连,同时 ...