数据库事务的特性:
我们一般提到事务都会说它具有ACID特性,那ACID到底代表了什么特性呢?
A:即:Atomicity,代表原子性
是指整个事务中的所有操作,要么全部做,要么全部不做,不可能出现停滞在中间某个环节这种情况。
若事务在执行过程中发生错误,则会被回滚到事务开始前的状态
C:Correspondence,代表一致性
是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏
I:Isolation,代表隔离性
是指:若有两个事务,运行在相同的时间内,并且执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
D:Durability,代表持久性
是指在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中。
事务必须是原子工作单元。是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务的四个隔离级别:
1.第一级:
Read uncommitted(读取未提交内容),也是最低的隔离级别
所有事务都可以看到其他未提交事务的结果,它会产生脏读,不可重复读和幻读。
如下所示,将隔离级别设置为Read uncommitted,启动一个事务A,同时再启动一个事务B,当在A中修改数据,且不执行提交,在事务B中也能看到这个更新的数据

事务A执行更新操作

事务B也能看到这个更新的数据

2.Read committed(读取提交的内容)
一个事务只能看见已经提交事务所做的改变
保证一个事务修改的数据提交后才能被另一个事务读取 ,另一个事务不能读取该事务未提交的数据
它会导致不可重复读和幻读:
不可重复读意味着我们在同一个事务中执行完全相同的select语句时可能看到不一样的结果。
如下所示:
启动两个事务,事务A执行更新数据的操作,但是并未执行提交,事务B对其不可见。
如图:A中执行更新操作

B中不可见

3.Repeatable Read(可重读)
这是MySQL的默认事务隔离级别
它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行
它可以防止脏读,不可重复读,但可能出现幻读
幻读:当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行
注:InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题

在一个事务中执行更新数据操作,只有两个事务都提交了,才能在另一个事务中看到数据变化。
4.Serializable(可串行化) 最高的隔离级别
它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。即:它在每个读的数据行上加上共享锁。
开启两个新事务,事务A和事务B,在事务A没有提交(Commit)之前,
事务B是不能更改数据的
如下所示:

以上所说的数据库是关系型数据库
在此,我再稍稍提一下非关系型数据库主要是Redis
Redis(Remote Dictionary Server)是非关系型数据库的一种
非关系型数据库(NoSQL)
指在此数据库中,数据之间是无联系的,数据的结构是松散的
NoSQL的优势:
1.数据量大,性能高:可以接受大量的数据
2.无需定义表和列,想添加数据可直接添加
3.高可用:在系统出现故障是,可以快速的解决问题
4.成本低
NoSQL的缺点:
1.数据之间无联系,若想存入几个有关系的内容则不能向关系型数据库那样定义主外键将其相关联,需要分开存储,造成一定程度的空间浪费,若其中一个需要修改,其他的具体的都要修改。
2.没有事务,不能依靠事务的ACID特性
Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型、持久化、主从同步。
Redis 的三个特点:
(1)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候,可以再次加载进行使用;
(2)Redis 不仅仅支持简单的key-value类型的数据,同时还提list,set,zset,hash等数据结构的存储;
(3)Redis 支持数据的备份,即master-slave模式的数据备份;
Redis 的五大数据类型
1.String(字符串)
2.Hash(哈希,类似java里的Map)
3.List
4.Set
5.Zset(sorted set: 有序集合)
这些数据类型都支持push/pop、add/remove及取交集并集和差集等操作,而且这些操作都是原子性的。
redis会周期性的使用RDB快照的方式,把更新的数据写入磁盘或者使用类似MySQL的AOF日志方式把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis支持将数据同步到多台从数据库上。
【注:RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。】
Redis对数据的操作过程:
如图所示:

服务端先访问Redis,若在Redis中找到,直接返回给服务端
若在Redis中没找到,去DataBase中找
服务端从DataBase中得到数据后先缓存进入Redis中,然后将值带到视图层,返回给客户端。减轻了对数据库的查询压力。

事务的隔离级别(附Redis的简述)相关推荐

  1. spring事务的隔离级别和传播特性详解(附实例)

    spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager.对于编程式事务 ...

  2. pb设置Oracle事务的隔离级别,Oracle的事务隔离级别

    ANSI/ISO SQL规定了四种事务隔离级别,分别是:read uncommitted,read committed,repeatable read,serializable ORACE提供了SQ9 ...

  3. 事务的隔离级别【防止忘记自用的】

    事务的隔离级别[防止忘记自用的] mysql中事务隔离级别详细(带例子) 事务隔离级别(带隔离级别表) 算是事务隔离级别的总结,但是对于不重复读中不会出现脏读而是出现幻读

  4. 数据库事务的隔离级别 (转)

    .NET 提供的数据库事务隔离级别 System.Data.IsolationLevel 枚举用于指定连接的事务锁定行为,它包含如下枚举:   成员名称 说明 Chaos 无法改写隔离级别更高的事务中 ...

  5. mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...

    上节回顾 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理解. 这篇记录我对 MySQL 事务隔离级别 read committed & MVCC 的理解. 前言 ...

  6. 二十六、事务的隔离级别

    事务的隔离级别 隔离级别 事务的隔离级别决定了事务之间可见的级别. 当多个客户端并发地访问同一个表时,可能出现下面的一致性问题: (1)脏读取(Dirty Read) 一个事务开始读取了某行数据,但是 ...

  7. 数据库事务的四大特性以及事务的隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...

  8. 「DB」数据库事务的隔离级别

    2019独角兽企业重金招聘Python工程师标准>>> 数据库事务的隔离级别 讲事务的隔离级别之前,先来介绍一下数据库事务的几个特性: (1)原子性 最基本的特性,意思是在一个事务内 ...

  9. SQLServer 事务的隔离级别

    SQLServer事务的隔离级别 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务 ...

  10. SQL Server事务的隔离级别

    SQL Server事务的隔离级别 ########## 数据库中数据的一致性 ########## 针对并发事务出现的数据不一致性,提出了4个级别的解决方法:  隔离级别  第一类丢失更新  脏读 ...

最新文章

  1. redis(nosql数据库)
  2. 技术方案包括哪些内容_揭秘:网络营销推广方案的内容包括哪些?
  3. opencv 人脸检测
  4. 问题:AttributeError: 'Tensor' object has no attribute 'creator'
  5. 详解HTTP协议~~~
  6. 内网穿透工具_utools让你3步搭建一个内网穿透工具
  7. [Linux命令]dd
  8. 第 8 章 查找算法
  9. CentOS 手工编译、手动编译安装 MongoDB
  10. 嵌入式软件架构设计之分层设计
  11. Mysql 可重复读
  12. .NET方向高级开发人员面试时应该事先考虑的问题
  13. 《把时间当作朋友》——运用心智获得解放 读书笔记(2)
  14. 让程序员崩溃只需要一句话
  15. apt-get install的默认安装路径是什么
  16. java经纬度格式_java经纬度格式转换
  17. 计算机键盘上的句号键在哪,电脑键盘句号是哪个键
  18. java日志脱敏_java 日志脱敏框架 sensitive,优雅的打印脱敏日志
  19. 文件管理之文件的逻辑结构
  20. windows怎样连接到linux桌面,Windows远程桌面连接Ubuntu 14.04

热门文章

  1. 如何在IDEA中写Java程序
  2. 2020年计算机专业研究生考试时间,2020计算机考研考试时间及考试内容
  3. strstr函数用法小结
  4. 360[极速模式]浏览器无法加载插件(mooc)的解决方案摸索
  5. 关于ADC输入前级的抗混叠滤波器问题以及驱动负载电容的电阻值选择建议
  6. java中printf,print,println,区别及用法详解
  7. 1-交通数据的获取系列学习
  8. 解决binwalk提取需要权限问题,binwalk提取文件报错。
  9. 投资理财-有趣的灵魂
  10. css背景上能添加文字,如何利用div+css来给背景图片上文字布局