数据库的事务,隔离级别和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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IE6/IE7/Firefox浏览器不兼容原因及解决办法

浏览器的不兼容,大家肯定都是深恶痛绝的,往往我们只是去做修补,却忘了更重要的事情,那就是追溯根源,避免类似的不兼容再次出现。在下不才,归纳几点html编码要素,望能指点各位: 1.文字…

[html] 如果要开发一个在超级大屏上显示的可视化页面,你首先要考虑什么?

[html] 如果要开发一个在超级大屏上显示的可视化页面,你首先要考虑什么? 适配 清晰度个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

excel按季度分类汇总_Excel数据分析实战(1)--电商销售记录分析

Excel是市面上最流行的办公软件之一,也是数据分析师入门最好的学习工具。因为其功能强大、操作简单,可以快速对数据进行清洗,建模,可视化,操作者不需要其他计算机基础也能快速上手。所以选择Excel进行数据分析入门的项…

android 跳转页面出错,Android 页面跳转(无/含有返回结果)

一.两个页面的xml文件factivityandroid:layout_width"match_parent"android:layout_height"wrap_content"android:text"直接跳转" />android:layout_width"match_parent"android:layout_height"wrap_content"android:tex…

[Silverlight]奇技银巧系列-2

Silverlight奇技银巧系列: 所有该系列中的文章只为介绍一些Silverlight中或隐藏在Silverlight .NET framework鲜为人知的知识和技巧。这些文章并非教程,也是不是什么技术指导,您只需对文章介绍的内容保有印象。这些知识和技巧也许会在不经意间…

[html] 如何解决微信浏览器视频点击自动全屏的问题?

[html] 如何解决微信浏览器视频点击自动全屏的问题? 1.1 页面内播放 X5内核视频在用户点击后默认会进入全屏播放,前端可以设置video的x5-playsinline属性来将视频限定于网页内部播放,这个默认还是使用的X5内核视频播放控件,层级高…

好程序员Java分享Java案例_英汉字典

在写代码的时候,当鼠标悬浮在某一个单词上面的时候,有道词典点有时会弹出一个消息气泡,在里面中给出关于这个单词相关的解释,下面给大家展示一个使用Java基础语言编写的英汉字典案例:   实现功能: …

同事更新几个表_最近计划学习的几个网站资源

在没有明确需要的时候逛知乎,B站什么的随便看教程,发现资源很多,五花八门,但是总也没系统地学习一下。一会儿看一小段,转眼就忘光了,只留下一个刚才我没有在玩耍的错觉。以上是无关紧要的忏悔。接下来主要记…

[html] H5播放的video视频,如何实现对视频截图?

[html] H5播放的video视频&#xff0c;如何实现对视频截图&#xff1f; <video controls src"./assets/demo.mp4" width"400" height"300" id"video">Sorry, your browser doesnt support embedded videos.</video><bu…

带有托管代码的InfoPath2007表单模版发布到SharePoint表单库(浏览器方式查看)

在本篇文章中,将与大家分享如何将一个带有托管代码(manage code)的InfoPath2007表单模版发布到SharePoint Server2007的表单库中&#xff0c;并使得最终用户可以通过浏览器方式访问。 1. 创建InfoPath表单模版 在这里&#xff0c;我们使用VSTO2005与InfoPath2007。生成…

cefsharp System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。...

解决办法 安装vc 2015 Redistributable 64位系统安装x64 如果还报错先装x64版本再装x86版本 https://files.cnblogs.com/files/xuejianxiyang/vc_redist.part1.rarhttps://files.cnblogs.com/files/xuejianxiyang/vc_redist.part2.rarhttps://files.cnblogs.com/files/xuejianx…

jdbc获取结果行数_java – 如何判断从JDBC执行更改的行数

我不确定如何从SQL执行中获取受影响的行数.我喜欢这个&#xff1a;boolean isResultSet statement.execute(arbitrarySQLCommand);我可以从getUpdateCount()方法获取受影响的行数.这一切都很好.我遇到的问题是更新计数为零时.这可能意味着&#xff1a;>这是一个DML语句,但它…

[html] 前端需要注意哪些SEO?

[html] 前端需要注意哪些SEO? 合理的title&#xff0c;description&#xff0c;keyswords 搜索引擎对这三项的权重逐个减小&#xff0c;title 值强调重点即可&#xff0c;重要的关键词出现不要超过两次&#xff0c;而且要靠前。2 、不同页面的tilte要有所不同&#xff1b;desc…

html语言文本框的符号,如何将文本框中的值作为HTML字符串提交?

我正在使用react draft wysiwyg库,我希望文本框中输入的值是HTML字符串的形式。我的州:editorState: EditorState.createEmptyeditorState{this.state.editorState}toolbarClassName"toolbarClassName"wrapperClassName"wrapperClassName"editorClassName&…

7种常用p2p共享协议

一、Napster&#xff1a;第一个大型的&#xff1b;中央集中式&#xff1b;倒闭了&#xff1b;二、Gnutella和Gnutella2&#xff1a;开源的&#xff1b;第一个真正非中心的。Gnutella2是对Gnutella的改进和扩展。三、FastTrack&#xff1a;第一个客户端是KazaA。协议与Gnutella类…

c++中怎么数组内有用元素的个数_前端面试(算法篇) - 数组乱序

一、面试题问&#xff1a;有一个长度为 100 的数组&#xff0c;如何从中随机挑选 50 个元素&#xff0c;组成一个新的数组&#xff1f;答&#xff1a;这个...那个...emmmmmm问&#xff1a;那先不挑 50 个&#xff0c;就挑一个数&#xff0c;知道怎么做吗&#xff1f;答&#xf…

axios+Vant+vue+jq重构jq月经周期计算器源代码(兼容移动端)

我是歌谣 代码重构不易 公众号关注小歌谣 前言 网络上流行了一款jq生成月经计算器的代码 是这样的 实现效果如图所示 本次讲解就是说明如何用VantjqVue实现此代码的重构 先看一眼重构演示的效果 这个是可以直接进行接口调用的 首先我们看一眼目录结构 我们这边贴出我自己手…

html页面高度设为自动,html – CSS:响应式布局中的高度自动问题

没有固定的正确高度.如果我在css中设置固定高度,则在响应式布局中,图像将不会以正确的宽高比调整大小.主要问题是css根据src-attribute设置的图像计算自动高度和宽高比,而不是width-和height-attribute.因此,如果有一个有宽度和高度的真实图像,一切正常.但是如果有一个空白(这只…

MVC Controller与ActionResult的返回值

Action的要求• 必须是一个公有方法• 必须返回ActionResult类型• 必须是实例方法• 不能是范型方法• 没有标注NonActionAttribute• 不能被重载&#xff08;overload&#xff09; Controller 提供了众多的方法让我们返回各种类型的 ActionResult。 1. View最常用的一种&…

工作380-js判断是否为空

noNull(x) {if (x "" || x undefined || x null) {return false;}return true;}