MySQL

1 事务

1.1 事务的特性

  • 原子性:是指事务包含所有操作要么全部成功,要么全部失败回滚。
  • 一致性:指事务必须使数据库从一个一致性状态变换成另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户 A 和用户 B 两者的钱加起来一共是 5000,那么不管 A 和 B 之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是 5000,这就是事务的一致性。
  • 隔离性:是当多个用户并发访问数据库时,比如操作同一张表时,数据表为每个用户开启的事务,不能被其他事务所干扰,多个并发事务之间要相互隔离。
  • 持久性:持久性是指一个事务一旦被提交,那么对数据库中的数据的改变就是永久的,即便是在数据库系统遇到故障的性况下也不会丢失提交事务的操作。

1.2 并发操作问题

  • 脏读:脏读是指在一个事务处理过程中读取到了另外一个未提交事务中的数据。
  • 不可重复读:不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
  • 虚读(幻读):幻读发生在当两个完全相同的查询执行时,第二次查询所返回的结果集跟第一个查询不相同。比如两个事务操作,A 事务查询状态为 1 的记录时,这时 B 事务插入了一条状态为 1 的记录,A 事务再次查询返回的结果不一样。

1.3 事务的隔离级别

  • Serializable(串行化):可避免脏读、不可重复读、幻读。(就是串行化读数据)
  • Repeatable read(可重复读):可避免脏读、不可重复读的发生。
  • Read committed(读已提交):可避免脏读的发生。
  • Read uncommitted(读未提交):最低级别,任何情况都无法保证。

在 MySQL 数据库中,支持上面四种隔离级别,默认的为 Repeatable read (可重复读);而在 Oracle 数据库中,只支持 Serializable (串行化)级别和 Read committed (读已提交)这两种级别,其中默认的为 Read committed 级别。

参考

https://segmentfault.com/a/1190000022636122

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 数据库简介 1. 定义 ​ 数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的...
    沙漠星海说远方近阅读 333评论 0 0
  • 一、事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1.1 原...
    AC编程阅读 1,825评论 0 1
  • 什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库, 每个数据库都有一个或多个不...
    骑小猪看流星阅读 393评论 0 9
  • MySQL高级篇 一、MySQL存储过程和函数 1.存储过程和函数的概念 存储过程和函数是 事先经过编译并存储在...
    super_hongtao阅读 774评论 0 0
  • 1.mysql 的引擎常用的为Innodb和MyIASM Innodb:对数据支持事物(ACID) ,提供...
    叶上初晨阅读 154评论 0 0