• 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四个特征:

  • 原子性(Atomicity)

要不全部成功,要不全部撤销。

  • 一致性( Consistency )

数据库正确地改变状态后,数据库的一致性约束没有被破坏。

  • 隔离性( Isolation )

事务之间相互独立,互不干扰。

  • 持续性( Durability )

事务的提交结果,将持久保存在数据库中。

二、事务并发会产生的问题

如果在没有事务隔离的情况下,可能出现:

  • 脏读

脏读是指当一个事务读取了一条数据,并对数据进行了修改,但是还没有提交,这时另外一个事务也读取了这条数据,然后使用了这条数据。如:用户的账户金额是100,T1将其修改为200,但是未提交,与此同时T2读取到用户账户金额是200,然后T1发生异常回滚,T2读到的200就是脏数据。

  • 不可重复读

不可重复读是指对于数据库某一条数据,一个事务内多次查询但是返回了不同的值,这是由于在查询间隔,被另一个事务修改并提交了。

  • 幻读

在一个事务的两次查询中数据行数不一致。例如一个事务查询了几列数据,而另外一个事务在此时插入了新的几列数据,第一个事务在接下来的查询中会发现有几列数据是它之前没有的,就好像产生幻觉一样,这就是发生了幻读。

三、事务隔离级别

事务隔离级别解决了什么并发问题,还存在什么并发问题?


1、Read Uncommitted(读取未提交内容)

这是事务最低的隔离级别,它充许另外一个事务可以看到这个事务未提交的数据。对并发出现的任何问题都无法避免。


2、Read Committed(读取提交内容)

保证一个事务修改的数据提交后才能被另外一个事务读取,即另外一个事务不能读取该事务未提交的数据。可避免脏读的发生,但是会出现不可重复读、幻读。


3、Repeatable Read(可重读)

这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据。可避免脏读、不可重复读的发生,但是会出现幻读。


4、Serializable(可串行化)

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突。在这个级别,可能导致大量的超时现象和锁竞争。可避免脏读、不可重复读、幻读的发生。


下一篇介绍InnoDB引擎的锁机制。

以上就是MySQL事务、锁以及应用(一)的内容,更多相关内容请关注微课江湖()!

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

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

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05MySQL无法启动的解决办法示例分享
  • 2017-05-11MySQL数据库迁移data文件夹位置详细步骤
  • 2018-12-05全面了解MySql中的事务_MySQL
  • 2018-12-05Oracle 启动例程 STARTUP参数说明
  • 2018-12-05推荐10个关于自动故障实例教程
  • 2018-12-05MySQL OOM 系统二 OOM Killer_MySQL
  • 2018-12-05Mysql-聚簇索引
  • 2018-12-05如何向MySQL数据库或者Oracle或导入表格文件
  • 2018-12-05深入理解MySQL进阶漂流记(一)
  • 2018-12-05linux mysql 报错:MYSQL:The server quit without updating PID

文章分类

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

最近更新的内容

    • 根据表名和索引获取需要的列名的存储过程
    • oracle 安装与SQLPLUS简单用法
    • php数据库连接mysql与mysqli的区别与用法
    • MySQL 查询某个字段不重复的所有记录
    • MySQL字符集的基本类型与统一字符集分析
    • 如何操作MSSQL查询数据分页
    • sqlserver 临时表 Vs 表变量 详细介绍
    • sql2000各个版本区别总结第1/3页
    • mysql中关于删除语句大全总结(下)
    • oracle 树查询 语句

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

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