IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySql 事务及其带来的问题和隔离级别 -> 正文阅读

[大数据]MySql 事务及其带来的问题和隔离级别

MySql 事务及其隔离级别

事务的概念:

事务通俗解释:由一系列操作组成,最后完成一件事
例如:转账
转账从A账户转到B账号,需要先将A账户中的金额减少,再将B账户的金额增加。
那么转账就是一个事务,A金额减少,B金额增加为完成这项事务的各个操作。
并且各个操作要么全部成功,要么全部失败。

事务具有四个特性:

  • 持续性:指一个事物一旦提交,它对数据库中数据的改变就应该是永久性的。
  • 原子性:说事物不可拆分,就等同于刚才说的,操作要么全部成功,要么全部失败
  • 隔离性:各个事务之间不可互相干扰
  • 一致性:执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

事务并发执行带来的问题以及解决方法(本文重点)

事务并发通俗的说就是两件事同时执行:是为了效率。
”隔离性“就是为了降低事务并发带来的干扰:是为了准确性。

并发带来的问题

1.脏读问题

比如程序员A在写代码的过程中,被程序员B看到了,但是B看了几眼就走了。在B走了 后A又对代码进行了修改,那么B刚才读的数据就是“脏数据”。

转移到事务来说就是,A事务执行过程中,B事务又来读取了一遍数据,但是随后数据就被A事务修改了,那么B读取的数据就是不准确的,这就是脏读
解决办法:给读操作加锁,保证事务执行完毕之前,其他事务无法读取数据

2.不可重复读

比如程序猿A提交完数据后,程序猿B开始读,读到一半程序员A又把数据改了,然后B读着读着发现数据跟刚刚看的不一样了

这就导致了两次读取操作结果不一致。
解决方法:就是在解决脏读问题的方法:给读加锁。上,再加一条限制,数据在被读取时不可更改。

3.幻读

幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据 时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

幻读是不可重复读的特殊情况,不可重复读主要是说数据内容改变了,幻读是数据个数改变了
解决方法:保证读和写必须在一个事务执行完,才可执行另一个事务

MySql提供解决以上问题的几种隔离级别

为了兼顾效率和准确性,MySql等数据库提供了几种隔离级别(根据使用情况选择是更偏向效率还是更偏向准确性)

  1. read uncommitted ???并发能力最强,隔离性最弱
  2. read committed????? 解决了脏读问题,只能读取提交后的数据
  3. repeatable read ?????解决了不可重复读问题,对读和写都进行了限制
  4. serializable??????????解决了幻读问题,并发能力最弱,隔离性最强

可在my.ini配置文件中修改,默认为repeatable read

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:30:00  更:2022-07-17 16:31:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 21:05:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码