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进阶之路:mysql中的事务相关知识

1:事务是什么?


事务(Transactional) 就是把多个要做的操作组合成一个整体.利用事务的特性来保证操作的安全性,如果一个事务做到一半出现任何错误,就会进行回滚操作.来恢复成最初的模样.


?2:事务的特性 (具有ACID的特性)


(1) A ?原子性(atomicity) ?: 事务是一个不可分割的工作单位,事务中的操作要么都修改,要么都不修改。

(2) C 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。

(3) I 隔离性(isolation):一个事务的执行不能被其他事务所影响。

(4) D 持久性(Durability): 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的.


3:mysql中的事务使用


mysql中的事务默认是自动提交的,在执行insert,update,delete语句时候每一条sql语句就是一个事务。

3.1 查看事务的提交方式: select @@autocommit; 结果为1表示使用自动提交. 为0表示手动提交

3.2 修改事务的提交方法: set?@@autocommit=0;? ?修改为手动提交

3.3 提交事务的方法:??commit ;? 当mysql的事务修改为手动提交的时候,执行完sql会出现数据没有更改的情况, 只有当commit执行后 才会更改数据.

3.4 开启事务的方法:?start transaction 或?begin;? 事务启动后,所有的sql都会暂时停止修改,只有执行commit才会看到更新后的数据.

3.5 回滚事务的方法:?rollback;? ??

4:并发事务导致的问题

?4.1:脏读

一个事务读取到另外一个事务还没有提交的数据

4.2:不可重复读

一个事务先后读取同一条记录,但两次读取的数据不同

4.3:幻读

一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据后,又发现这行数据已经存在了,像出现了幻觉一样.

5:事务隔离级别

??MySQL 包括的事务隔离级别如下:

  • 读未提交(READ UNCOMITTED)
  • 读提交(READ COMMITTED)
  • 可重复读(REPEATABLE READ) mysql默认使用的
  • 串行化(SERIALIZABLE)

不同隔离级别对应解决的问题

5.1:读未提交(READ UNCOMITTED):

? ? 在该隔离级别下,所有事务都可以看到其它未提交事务的执行结果。所以会导致脏读的情况.性能最好,但安全性最差,所以基本不会使用该级别.

5.2:读提交(READ COMMITTED)

该隔离级别下,一个事务从开始到提交前所做的任何改变都是不可见的,事务只能读取到已经提交的事务所做的改变。也就是会出现 一个事务执行期间读取到其他事务未提交和已提交的两种不同的数据,所以会出现不可重复读的问题.但是能解决脏读.?

5.3:可重复读(REPEATABLE READ)

一个事务只能读取到某条记录后,即使其它事务修改了该记录的值并且提交,读到的仍是第一次读到的值,而不是每次都读到不同的数据。那么这种隔离级别就称之为可重复读。是mysql默认的隔离级别

5.4:串行化(SERIALIZABLE)

该级别主要通过强制事务排序来解决幻读问题。简单来说,就是在每个读取的数据行上加上共享锁实现,这样就避免了脏读、不可重复读和幻读等问题。但是该事务隔离级别执行效率低下,且性能开销也最大,所以一般情况下不推荐使用。

6:修改事务隔离级别

6.1:查看事务隔离级别的sql:? ? select @@transaction_isolation;

6.2:当前会话的隔离级别 :?set? session??transaction isolation? level? ? ?READ UNCOMITTED

6.3:设置全局的隔离级别? ? ?set? global?transaction isolation? level? ? ?READ UNCOMITTED

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:08:39  更:2022-04-01 00:10:56 
 
开发: 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 4:17:11-

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