前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >事务、事务特性、不考虑隔离性会产生的三个问题、事务隔离级别

事务、事务特性、不考虑隔离性会产生的三个问题、事务隔离级别

作者头像
暴躁的程序猿
发布2022-03-24 14:09:18
2570
发布2022-03-24 14:09:18
举报
文章被收录于专栏:阿飞的学习记录

**

一、什么叫做事务

**

事务是数据库操作的最小工作单元,指作为单个逻辑工作单元的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行,事务是一组不可再分割的操作集合。 事务就是并发控制的单位,是用户定义的一个操作序列。

**

二、事务具备的特性

** ACID属性

四大特性: A:原子性(Atomicity) 事务是一个不可分割的整体,是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。

C:一致性(Consistency) 事务执行的结果必须是从数据库从一个一致性状态转换到另一个一致性状态。

I:隔离性(Isolation) 一个事务的执行不能被其他事务干扰,并发执行的各事务是互不相干的。

D:持久性(Durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 **

**

三、不考虑隔离性会产生的三个问题

**

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

2.幻读:例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样。

3.不可重复读:比方说在同一个事务中先后执行两条一模一样的select语句,期间在此次事务中没有执行过任何DDL语句,但先后得到的结果不一致,这就是不可重复读。

四、事物的隔离级别

** 1.default:默认的隔离级别,使用数据库默认的事务隔离级别

2:读未提交:一个事务读到另一个事务未提交的更新数据。(读取了未提交的数据,引发脏读)。

3:读已提交: 这是大多数数据库系统默认的隔离级别,不是MySQL默认的,只能看见已经提交事务所做的改变,引发不可重复读。(不可重复读: 同一事务执行完全相同的select语句时可能看到不一样的结果。期间在此次事务中没有执行过任何DDL语句,但先后得到的结果不一致,这就是不可重复读。)*

4.可重复读: 这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,看到同样的数据行,上锁。此级别可能出现的问题-幻读。

5.可串行化:*这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。*简言之,它在每个读的数据行上加上共享锁。 可能导致大量的超时现象和锁竞争。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么叫做事务
  • 二、事务具备的特性
  • 三、不考虑隔离性会产生的三个问题
  • 四、事物的隔离级别
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档