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事务与锁机制

文章导读

什么是事务及其ACID特性

事务是由一组SQL语句组成的逻辑处理单元。通俗来讲,事务就是我们要去完成的一件事,例如吃饭,其中吃饭这件事务由很多步骤组成,比如买饭、拿筷子等等,这一个个的步骤相当于一条SQL。事务有四大特性,即ACID。

  • 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。
  • **一致性(Consistent) **:在事务开始和完成时,数据都必须保持一致状态。如果不满足一致性,我们在编写代码时,如果事务执行过程中,数据不断的变化,会给开发造成很多的困扰。
  • **隔离性(Isolation) **:数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。
  • **持久性(Durable) **:事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。

并发事务带来的问题

单个事务执行时,基本不会有什么问题,但是当很多事务并发执行时,就会产生以下问题。

  • 更新丢失(脏写):最后事务的更新使其他事务的更新失效就是脏读。
  • 脏读:事务A读到了事务B已经修改但还未提交的数据,不符合一致性。
  • 不可重复读:事务在执行过程中对一条数据的读取结果不一致,不符合隔离性。
  • 幻读:事务A读到了事务B提交的新数据,不符合隔离性。

事务隔离级别

针对以上并发事务带来的问题,数据库提供了隔离一系列隔离机制来解决以上问题。
在这里插入图片描述

Mysql默认采用的是可重复读级别,相信很多人会说,既然可串行化可以完全解决以上问题,那为什么Mysql不采用可串行化,可串行化其实就是不让事务并发执行,而是一个一个执行,那么效率肯定会低,因此Msql中和多种因素采用了可重复的隔离级别。

如果对执行效率没有要求,可以通过“set tx_isolation=‘REPEATABLE-READ’;”命令设置事务的隔离级别。

锁机制

事务的隔离级别可以解决事务并发带来的问题,那么事务的隔离级别是如何实现的呢?是通过锁机制来实现的。锁是计算机协调多个进程或线程并发访问某一资源的机制。

锁分类

  • 按照性能

    • 乐观锁
    • 悲观锁
  • 按照对数据操作的粒度

    • 行级锁(每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。)
    • 表级锁(每次操作锁住整张表。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;)
  • 按照对数据库的操作

    • 读锁:加了读锁,其他事务可以对数据进行读取但是不可写。
    • 写锁:加了写锁,其他事务不可以对数据进行读、写操作。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:47:10  更:2021-11-14 21:49:15 
 
开发: 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年11日历 -2024/11/24 5:40:09-

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