数据库的事务,隔离级别和3大范式
*数据库事务的想关操作
1.事务开始:开始是一个事物,作为回滚的标记
2,回滚 rollback :回滚到上一个事务开始的地方,
或者回滚到某个存档点,期间没被 commit ; 操作都会被撤回
3.提交commit ;将事务中所有操作提交到数据库中 4.存档点:设置存档点方便回滚
*开始事务
........确认一个起点
begin 或 start transaction ;#两种都可以
begin ;update account set money=money-1000 where id=2;
update account set money=money+1000 where id=1;select *from account;#提交事务结果
commit ;
回滚:在未提交到数据库时,可回滚到上次提交数据后
begin ;
update account set money=money-1000 where id=2;
update account set money=money+1000 where id=1;
select *from account;
#回滚
rollback ;#后悔
多条数据
begin ;
insert into account(name, money) values ('zhaoliu',2000);#存档
savepoint suibian;update account set money=money-1000 where id=2;
update account set money=money+1000 where id=1;select *from account;rollback to suibian;commit ;
*数据库事务的4个特性(ACID)
1.原子性( atomicity )
事务包含的所有操作,要么全部成功,要么全部失败
2,一致性( Consistency )(快照读)
事务必须使数据库从一个一致性状态到另一个一致性状态
3.隔离性( isolation )
如果有多个用户并发访问数据库,数据库的每个用户开始事务
不能被其他事物的操作干扰,多个并发事务之间应当保持相互隔离
4.持久性( Durability
事务的操作,一旦被提交,对于数据库的改变是永久的
即使数据库发生故障,也不能丢失已提交的数据/完成的改变
*三个隔离性问题
1.脏读
一个事务读取了未提交事务执行过程中的数据
2.不可重复读
对于数据库中的莫个数据,一个事务执行过程中多次查询返回不同结果,
3,幻读(虚读
对于一个事务,批量修改数据的时候,另一个事物插入一条新数据
在第一个事务中,执行了操作却没有将所有情况数据进行修改
*4个隔离级别
1 RU (Read Uncommitted
读取未提交内容,所有的事务都可以看到其他事务未提交内容
2,RC (Read Committed
读取提交内容,可以避免脏读,但是无法避免不可重复读和幻读
3 RR (Repeatable Read
可重复复读,MYSQL默认的隔离级别,可以避免脏读和不可重复读
但不能避免幻读,通过Innodb引擎版本并发控制来避免幻读
4 ,Serializable 串行化
最高隔离级别,强制所有事务排序执行,
性能会出现问题,会出现大量的超时和锁竞争现象
*隔离级别的实现
1,读锁和写锁
共享锁:数据库的读锁,一旦加上该锁,其他用户只能读不能写
排它锁 : 写锁, 一旦给表或行加上写锁,其他用户既不能读也不能写
2,行锁和表锁
*数据库设计3大范式
范式顺序
1 2 3 bc 4 //范式都是依赖关系
第一范式
数据库表的每一列都是不能继续拆分的最小单元
第二范式
满足INF,表中的每一列都必须依赖主键
一个表只描述一个事
第三范式
满足2NF,表中所有的列至于主键直接相关,而不是间接相关
第一范式:列不能拆分
第二范式:每个表只能描述一个事
第三范式:使用外键做表之间的关联
转载于:https://www.cnblogs.com/lxx-1843693653/p/10938564.html
数据库的事务,隔离级别和3大范式相关推荐
- 数据库的事务隔离级别
ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别: l 未提交读(read uncommitted) l 提交读(read committed) l 重复读(repeatable rea ...
- 【数据库】Oracle数据库查看事务隔离级别
查看Oracle数据库事务的隔离级别. --Oracle 查看事务隔离级别 SELECT * From dual for update;SELECT s.sid, s.serial#, case bi ...
- 【数据库】事务隔离级别
事务隔离级别 为了更好地说明事务隔离级别,请先移步快速理解脏读.不可重复读.幻读 有四种隔离级别,分别是读未提交(Read uncommitted),读已提交(Read committed),可重复读 ...
- 数据库脏读,不可重复度,幻读以及对应的事务隔离级别
1. 脏读: 所谓脏读,即"无效事务读出".也就是说,一个事务读取到另一个事务没有提交的数据.我们举个例子:事务A1修改了一行数据,但是还没有提交(还没写入硬盘),这时候事务A2读 ...
- 概述MySQL数据库---事务隔离级别
同一个应用程序中的多个事务或不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题,事务并发处理可能引起的问题可分为如下三种类型: 脏读(Drity Read): 已知有两个事 ...
- mybatis 源码系列(七) Java基础之数据库事务隔离级别
更多mybatis 源码系列文章可关注我的博客,点击前往 正确设置数据库的事务访问级别,有助于我们的应用程序达到预期的效果 在mybatis中,提供了事务隔离级别的枚举类:org.apache.iba ...
- 数据库 事务隔离级别之可重复读
通过下面的sql语句,在sql客户端查询可以获取数据库的事务隔离级别: show variables like '%isolation%'; 查看全局事务隔离级别和session事务隔离级别(mysq ...
- SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
六.各种事务隔离级别发生的影响 修改数据的用户会影响同时读取或修改相同数据的其他用户.即这些用户可以并发访问数据.如果数据存储系统没有并发控制,则用户可能会看到以下负面影响: · 未提交的依赖关系(脏 ...
- mysql 事物隔离界别_MySQL锁与事务隔离级别
------------恢复内容开始------------ 一.概述 1.锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.IO等)的 ...
最新文章
- 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...
- 用泰勒级数来估计函数的近似值
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 求 1 的傅里叶变换 )
- BRCM5.02编译三 : Error: Could not retreive version from libtoolize
- 深度学习的非主流应用
- 机器学习从零开始-常见算法手推pure python
- C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
- python 识别数字字母 训练集_Python 实现训练集、测试集随机划分
- Web数据存储之localStorage和sessionStorage
- 初学servlet之使用web.xml配置
- MySQL 排序、分页查询、聚合查询
- 小鹏汽车窃密特斯拉实锤?前员工回应:确实上传过30万份Autopilot源码
- Windows 下安装 Redis 1
- Windows 常用的 CMD 命令
- 人力资源管理学习网站推荐
- linux系统用虚拟光驱装win7,虚拟光驱安装win7系统步骤
- Java多线程基础(下)
- 1块钱30分钟利用华为云服务器配置一台云电脑并搭建一个简易网站(步步截图较详细)
- 滴滴司机调度系统实践
- ffmpeg实用命令总结,直播流处理相关
热门文章
- JAVA如何代码静态检查术语_Sonar代码静态检查规则-JAVA篇(二)
- datatables 自定义按钮及响应点击事件
- 字符串按照单词为单位逆序排列
- 1.the linux device model--kobject kset学习笔记
- React开发(139):react中onref
- Leetcode刷题(2)回文数
- react学习(59)--this.props语法糖
- 前端学习(3128):react-hello-react之回调形式的ref
- [html] 字体图标加载出来成了小方块,是什么原因呢?如何解决?
- PS教程第二十课:有了选区就有了界限