• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MYSQL 数据库事务再认识

MYSQL 数据库事务再认识

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MYSQL ,数据库,事务等相关知识,希望本文的分享对您有所帮助
事务的概念:单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。简单理解就是每执行一次数据操作都是在事务这个逻辑工作单元中执行的。

事务的四个属性:ACID。

A:atomic,原子性。原子性强调的是不可分割,将执行数据库的过程抽象为实体对象,那这个对象要么存在要么不存在,执行时,要么整个过程执行完毕,要么不执行。

这样的优势,保证数据的完整性,正确性,最真实的实例就是同一张银行卡在转账的过程中突然断点,事务无法执行完毕,回滚后保证数据在原有的状态,这样自己卡内余额不会减少。

C:Consistent,一致性。一致性和原子性的理解基本是一致的,都是为了保证数据的完整性,例如,一个事务是由增删改查4种操作组成,只有四个操作都执行成功的情况下,才能保持成功的状态,只要有一个操作执行不成功就是失败状态,保证状态的统一。

I:Insulation,隔离性。隔离性针对并发事务存在的,任何事务之间相互隔离,互不影响。高隔离性情况下,一个事务访问另一个事务要么是访问该事务执行之前的状态,要么是执行完成之后的状态,不会访问第一个事务执行之间的状态,但这样导致数据的并发性降低,所有在设计数据库的时候要根据实际要求,权衡事务的隔离级别。

事务的隔离性由浅入深可以分为:READ UNCOMMITTED(未提交读)---READ COMMITTED(提交读)---REPEATABLE READ(可重复读)---SERIALIZABLE(序列化)

(1)SERIALIZABLE(序列化)

添加范围锁(比如表锁,页锁等,关于range lock,我也没有很深入的研究),直到transaction A结束。以此阻止其它trasaction B对此范围内的insert,update等操作。
幻读,脏读,不可重复读等问题都不会发生。

(2)REPEATABLE READ(可重复读)

对于读出的记录,添加共享锁直到transaction A结束。其它transaction B对这个记录的试图修改会一直等待直到trasaction A结束。

可能发生的问题:当执行一个范围查询时,可能会发生幻读。

(3)READ COMMITTED(提交读)

在trasaction A中读取数据时对记录添加共享锁,但读取结束立即释放。其它transaction B对这个记录的试图修改会一直等待直到A中的读取过程结束,而不需要整个trasaction A的结束。所以,在trasaction A的不同阶段对同一记录的读取结果可能是不同的。、

可能发生的问题:不可重复读。

(4)READ UNCOMMITTED(未提交读)

不添加共享锁。所以其它trasaction B可以在trasaction A对记录的读取过程中修改同一记录,可能会导致A读取的数据是一个被破坏的或者说不完整不正确的数据。

另外,在trasaction A中可以读取到trasaction B(未提交)中修改的数据。比如trasaction B对R记录修改了,但未提交。此时,在Trasaction A中读取R记录,读出的是被B修改过的数据。

可能发生的问题:脏读。

D:Duration,持久性。事务执行完成后,对数据的影响是持久存在的,即使在这之后系统出现致命故障。

以上就是MYSQL 数据库事务再认识 的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL essential版本和普通版本有什么区别?
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 解析远程连接管理其他机器上的MYSQL数据库
  • MySQL timestamp自动更新时间分享
  • MySQL Order by 语句用法与优化详解
  • 深入解析mysql中order by与group by的顺序问题
  • 解析mysql不重复字段值求和
  • MySql实现跨表查询的方法详解

相关文章

  • 2017-05-11MySQL Sleep连接过多问题解决方法
  • 2018-12-05使用dreamhost空间实现MYSQL数据库备份方法
  • 2017-05-11Centos中安装多个mysql数据的配置实例
  • 2018-12-05Oracle 数据库连接查询SQL语句
  • 2018-12-05MySQL数据库数据存放位置修改
  • 2018-12-05找到一种不错的从SQLServer转成Mysql数据库的方法
  • 2018-12-05教你怎么修改mysql默认最大连接数
  • 2018-12-05Oracle最大日期获取方法
  • 2018-12-05Mysql查询缓存碎片、缓存命中率及Nagios监控
  • 2018-12-05关于MySQL安装包如何使用的详细介绍

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQLServer XML查询快速入门(18句话)
    • sqlserver获取当前日期的最大时间值
    • Mysql学习总结(16)Mysql之数据库设计规范_MySQL
    • select * from sp_who的解决方案
    • Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]
    • mysql中char与varchar的区别分析
    • MySQL5.7的安装与配置的操作步骤详细介绍
    • 浅谈MySQL漂流记(六)
    • 用SQL实现统计报表中的"小计"与"合计"的方法详解
    • sql server的存储过程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有