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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库事务总结 -> 正文阅读

[大数据]数据库事务总结

1.事务简介

事务:简短来说就是一组操作要么全部完成,要不全部不完成。不存在只执行一部分的操作。

事务回滚:当一个事务执行过程中发生了异常、错误,则回到没有执行事务之前的状态。

事务提交:当一个事务执行过程了没有发生任何异常,错误,这时我们就要保存这个事务的修改。

2.事务的四大特性

1.原子性(Atomicity)

整体 【原子性是指事务包含的所有操作要么全部成功,要么全部失败】

?

2.一致性(Consistency)

数据 【事务提交后的状态合集称为一致,也就是数据库只包含事务提交的状态】

3.隔离性(Isolation)

并发 【对于任意两个并发的事务A和B,在事务A看来,B要么在A开始之前就已经结束,要么在A结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。】

4.持久性(Durability)

结果 【持久性是指一个事务一旦提交了,就保存到硬盘上,对数据库中的数据的改变就是永久性的】

3.事务隔离问题

由于事务可包含多个操作,在多个客户端并发访问过程,可能会发生一个事务只做了一部分操作,此时另外一个事务也开始执行,那么前一个事务的只执行部分操作的中间状态会给第二个事务造成影响。


①、读未提交读(Read Uncommitted),也称脏读,一个事务读到另一个事务未提交的内容

事务B读看到事务A没有提交的内容,比如对A、B账户的修改。

②、不可重复读(Read Committed),一个事务读到另一个事务已提交的内容(主要是数据更新)

此级别解决了读未提交读的问题,即其它事务没有提交的内容对本事务不可见。
但是事务B能读到事务A提交的数据更新内容。

③、可重复读(Repeatable Read),虚读(幻读):一个事务读到另一个事务已提交的内容(主要是数据插入)

此级别解决了读未提交读不可重复读的问题,
事务B能读到事务A提交的数据插入内容。

④、可串行化(Serializable):最高的隔离级别,通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。

4.事务锁

为了解决事务隔离性问题,引入锁的概念, 只 有 拿 到 锁 的 事 务 才 可 对 数 据 库 进 行 读 写 操 作 \color{red}只有拿到锁的事务才可对数据库进行读写操作 只有拿到锁的事务才可对数据库进行读写操作。事务有两种锁,并且有相应的权限。
①、读锁,也称为共享锁。某个事务A拿到该锁时,事务A只能进行读操作,此时其他事务也可以拿到这把锁(共享)。
②、写锁,也称为排它锁。某个事务A拿到该锁时,事务A能进行读、写操作,此时其他事务不能拿到这把锁(排它)。

如果某个事务A拿到了读锁,其它事务可以拿到读锁(共享),但是无法获取写锁。
如果某个事务A拿到了写锁,其他事务既不能拿到写锁,也拿不到读锁!
③、锁的粒度

所谓锁的粒度,就是锁的范围,比如如果锁的范围是一张表,则事务A获取写锁后,只能事务A进行读、写,其他事务全部要靠边站。
如果锁的粒度是事务A需要操作的某几行记录,其它记录如果其他事务拿到锁仍然可以读、写。

一般情况下,锁的粒度越小(锁的范围小),则并发问题解决越好(事务都是并发执行),但是效率越低,因为需要大量的资源来确保各个事务的锁的粒度没有交集、冲突。

锁的粒度越大(锁的范围大),则并发问题解决越差(其他事务都在等待),但是效率较高,因为不要资源来控制各个事务的锁粒度交集问题。
?

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

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