数据库的四大特性以及事务的隔离级别
什么是事务
什么是事务?
当多个操作有这样的要求时:要么都成功要么都失败,这说明这多个操作必须在一个事务中,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
事务的四个特性?
- A:原子性(Atomicity)
事务中包括的诸操作要么全成功,要么全失败。
- B:一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
也就是说事务执行之前数据库数据处于正确状态,执行之后也处理正确状态,如果有些事务运行中发生故障,这些事务对数据库所做的修改有一部分已写入数据库,这时数据库就处于不正确的状态即不一致的状态。
一致性与原子性是密切相关的,如果事务没有原子性的保证,那么在发生系统故障的情况下,数据库就有可能处于不一致状态。
- C:隔离性(Isolation)
一个事务的执行不能被其他事务干扰。解决多个线程并发操作事务情况,每个事务互相不影响
- D:持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
隔离级别
ANSI SQL 标准定义了隔离级别,但并不是SQL数据库独有.JTA也定义了同样的隔离级别.级别越高,成本越高。
由事务隔离性引发几种问题 ?
脏读、 不可重复读 、虚读 、 丢失更新
n 脏读: 一个事务读取到另一个事务 未提交数据
n 不可重复读: 一个事务中,先后读取两次,两次读取结果不同,读取到了另一个事务已经提交的数据,此问题针对update更新来说。
n 虚读: 一个事务,先后读取两次,结果不同,读取到了另一个事务已经提交的数据 ,此问题针对insert插入来说。
n 丢失更新: 两个事务 同时修改一条数据,后提交事务,覆盖了之前提交事务结果(使用悲观锁和乐观锁处理,悲观锁性能太差,建议使用乐观锁)
隔离级别 |
含义 |
READ_UNCOMMITTED |
允许你读取还未提交的改变了的数据。可能导致脏、幻、不可重复读 |
READ_COMMITTED |
允许在并发事务已经提交后读取。可防止脏读,但幻读和 不可重复读仍可发生 |
REPEATABLE_READ |
对相同字段的多次读取是一致的,除非数据被事务本身改变。可防止脏、不可重复读,但幻读仍可能发生。 |
SERIALIZABLE |
完全服从ACID的隔离级别,确保不发生脏、幻、不可重复读。这在所有的隔离级别中是最慢的,它是典型的通过完全锁定在事务中涉及的数据表来完成的。 |
事务的隔离级别 ,是由数据库提供的 ,并不是所有数据库都支持四种隔离级别
MySQL : READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE (默认 REPEATABLE_READ)
Oracle : READ_UNCOMMITTED、READ_COMMITTED、 SERIALIZABLE(默认 READ_COMMITTED )
在使用数据库时候,隔离级别越高,安全性越高 ,性能越低
实际开发中,不会选择最高或者最低隔离级别,选择 READ_COMMITTED(oracle 默认)、REPEATABLE_READ (mysql默认)
数据库的四大特性以及事务的隔离级别相关推荐
- 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 数据库事务的四大特性以及事务的隔离级别详解
作者 : fjdingsd 来源 : 博客园 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- ACDI事务四大特性以及事务的隔离级别
目录: 一:ACDI事务四大特性 二:事务的隔离级别 Read uncommitted(读未提交) Read committed(读并提交) Repeatable read(重复读) Serializ ...
- 数据库的四大特性和事务隔离级别
数据库中经常被问到四大特性和隔离级别,一般都是涉及到概念性问题,在此做一些整理总结,方便理解. 1.事务的隔离级别 由低到高依次为Read uncommitted(未授权读取.读未提交).Read c ...
- 事务的特性及事务的隔离级别(转)
原文:http://www.cnblogs.com/fjdingsd/p/5273008.html 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支 ...
- 数据库事务的四大特性和四个隔离级别
一.数据库事务的四大特性 事物是指作为一个单元的一组有序的数据库操作,单元是不可分割的,如果一组数据的所有操作都执行成功,事物完成,进行事物提交(commit),其修改作用于所有数据库进程.有一个操作 ...
- 不属于mysql事物的特性_mysql基础---事务 事务的四大特性(ACID) 四种隔离级别
一.事务 mysql中,事务是一个最小的不可分割单元.事务能够保证一个业务的完整性. eg:银行转账 a -> -100 update user set money=money-100; b - ...
- 事务的四个特性以及四个隔离级别
概述 数据库中的事务有四大特性(ACID),分别是原子性.一致性.隔离性和持久性.针对隔离性,还有四个隔离级别,分别是串行化.可重复读.读已提交和读未提交.这四个隔离级别是针对并发事务中存在的三个问题 ...
- 【5.2】事务的隔离级别
1.参考博文:数据库事务的四大特性以及事务的隔离级别 http://www.cnblogs.com/fjdingsd/p/5273008.html 2.参考博文:理解事务的4种隔离级别 http: ...
最新文章
- YOLOv3模型剪枝,瘦身80%,提速100%,精度基本不变
- 《JavaScript面向对象编程指南》——1.3 分析现状
- centos mysql 设置_CentOS下MySql优化及安全设置centos
- AndroidStudio设置背景颜色,字体大小,默认显示行号
- 【Boost】boost库中thread多线程详解4——谈谈recursive_mutex
- 域内计算机如何同步网络t时间,网络节点的同步方法
- 实现基于 ASP.NET Forms 身份验证的跨子域单点登录
- (转)法线贴图Nomal mapping 原理
- java json处理入门
- 游标需要手动关闭吗MySQL,【MySQL必知必会】使用游标
- 电子数字计算机和电子模拟计算机区别,电子数字计算机和电子模拟计算机的区别在哪里?...
- 服务器系统2008还原,Windows2008系统克隆——GHOST备份还原系统
- 给马斯克群发卫星算本账,星链计划跟5G有可比性么?
- 最长公共子序列(LCS) 过程图解
- C语言麦克劳林展开e^x,sinx,cosx
- VScode无法只按住鼠标左键选取多行
- 海洋表面洋流数据可视化
- 爬取贴吧上的图片到本地
- Mac 使用 tar 压缩生成 “._” 文件的解决办法
- DB 查询分析器 6.03 在Windows 8 上安装与运行演示
热门文章
- python权限不够cmd安装不了_python环境配置+matplotlib
- 可有可无的Mysql工作技巧 3 -- 工作中用到的理论范式,工具,建模经验
- golang for range原理(转载)
- The Process class relies on proc_open, which is not available on your PHP installation.
- jquery.cookie.js使用
- window.opener.location.reload() and href()的区别
- zookeeper分布式锁原理及实现
- Spring Boot+Maven将配置文件打包到Jar包外方便运维修改配置
- linux makefile详解
- 腾讯地图拾取坐标html,腾讯地图Api 实现拾取坐标功能示例