登录
首页 >  数据库 >  MySQL

MySQL——事务的基本操作

来源:SegmentFault

时间:2023-02-18 16:27:36 114浏览 收藏

本篇文章向大家介绍《MySQL——事务的基本操作》,主要包括MySQL,具有一定的参考价值,需要的朋友可以参考一下。

在数据库中,事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。

为确保数据库中数据的一致性,事务的操作应该是流畅完成的,中间不能失败,一旦有操作失败,那么回滚到开始事务的状态。

图片描述

事务的特点(ACID)

  • 原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生
  • 一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态。(数据不被破坏)
  • 隔离性:一个事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对并发的事务也是隔离的。每一个事务都存在一个事务空间,彼此不干扰
  • 持久性:一个事务一旦被提交,它对数据库的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

事务控制的语言

  • [ begin ]:开启一个事务,开启一个新的事务空间
  • [ commit ]:提交事务
  • [ rollback ]:回滚事务

图片描述

每次begin开启一个事务后,选择commit和rollback结束本次事务。要重新begin开启一个新的事务。

事务的并发问题

存在五种问题:脏读、不可重复读、幻读、第一类丢失更新、第二类丢失更新
隔离级别:不同的隔离级别可以处理不同的并发问题
默认的隔离级别为:repreatable read
MySQL默认情况下不会出现幻读和第一类丢失更新

图片描述

第一类丢失更新(回滚丢失)

图片描述

第二类丢失更新(覆盖丢失)

图片描述

不可重复读

图片描述

幻读

图片描述

脏读

图片描述

MySQL使用锁机制来解决第二类丢失更新
悲观锁:

select ......for update;

乐观锁:使用版本控制

文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《MySQL——事务的基本操作》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表