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

mysql 数据库中的事务,隔离级别

作者:when_less_is_more 字体:[增加 减小] 来源:互联网 时间:2017-10-09

when_less_is_more通过本文主要向大家介绍了数据库,mysql,事务等相关知识,希望本文的分享对您有所帮助

一,事务的概念

事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单元。例如,在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或者整个程序。

一般,事务具有以下四个特性(ACID):

原子性(Atomicity):要么全做,要么全不做。保证了一个事务为一个最小单元,内部不可分割。

一致性(Consistency):从一个一致性状态变到另一个一致性状态。保证事务中每个操作线程不可单独提交,若成功则一起提交,不成功则事务回滚。

隔离性(Isolation):一个事务的执行不能被其他所干扰。保证了不同事务之间看到的数据视图相互独立,相互隔离。

持久性(Durability):事务提交之后,对数据库的改变是永久的。保证事务提交之后数据会持久地保存下来。

在上述四个特性中,一致性是最基本的属性,其他三个属性都是为了保证一致性而存在的。

二,数据不一致性几种情况

脏读:一个事务读到另一个事务未提交的数据。

不可重复读:一个事务读到另一个事务已经提交的数据(update),导致查询结果不一致。

幻读:一个事务读取到另一个事务已经提交的数据(insert或者delete),从而导致查询结果不一致。

三,事务隔离级别

1.未提交读(read uncommitted):所有事务都可以看到未提交事务的执行结果,本隔离级别很少用到实际应用中,以上三种数据不一致的情况都会发生。

2.已提交读(read commited):一个事务从开始到提交之前所做的任何改变都是不可见的,直到提交为止。可以避免脏读,但是,不可重复读和幻读仍会发生。

3.可重复读(repeated read):MySQL的默认隔离级别。此隔离级别不会看到其他事务提交后的结果。可以避免不可重复读,但仍会出现幻读。

4.可串行化(serializable):最高的隔离级别,解决了幻读。该隔离级别会产生大量超时现象,一般在开发中使用的情况不多。可串行化可以通过两段锁协议来实现。事务分两个阶段,第一阶段是获得封锁,但是不能释放任何锁;第二个阶段是释放锁,在这个阶段不能再申请任何锁。

 

以上四个隔离级别实现过程中用到的锁:

1.未提交读:排他写锁

2.已提交读:排他写锁,共享读锁

3.可重复读:排他写锁,共享读锁

4.可串行化:仅通过行级锁无法实现事务序列化,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

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

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

  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析远程连接管理其他机器上的MYSQL数据库
  • 解析mysql 缓存如何使用内存
  • 浅析mysql 语句的调度优先级及改变
  • 关于mysql 的时间类型选择
  • 基于mysql体系结构的深入解析
  • 解析mysqldump的delay-insert选项
  • 优化mysql数据库的经验总结

相关文章

  • 2018-12-05MYSQL 浅谈MyISAM 存储引擎
  • 2018-12-05Windows Oracle常见服务介绍
  • 2018-12-05 浅谈MySQL备份字符集的问题
  • 2018-12-05MySQL之-提示"mysql deamon failed to start"错误的解决方法
  • 2018-12-05sql语句查询数据库中的表名/列名/主键/自动增长值实例
  • 2018-12-05SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全
  • 2017-05-11mysql如果数据不存在,则插入新数据,否则更新的实现方法
  • 2018-12-05MySQL基本命令
  • 2018-12-05MySQL 数据库设计复习笔记及项目实战
  • 2017-05-11MySQL查询倒数第二条记录实现方法

文章分类

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

最近更新的内容

    • MySQL学习笔记1:安装和登录(多种方法)
    • 数据库更新Sqlserver脚本总结
    • MYSQL学习总结(三):MYSQL生成用户及赋权
    • SELECT 语句模式
    • T-SQL 查询语句的执行顺序解析
    • mysql外键(Foreign Key)介绍和创建外键的方法
    • MySQL 基础知识小结
    • Oracle教程 误添加数据文件删除方法
    • 用sql脚本创建sqlserver数据库范例语句
    • 工作中常用的mysql语句分享 不用php也可以实现的效果

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

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