本文主要介绍理解mysql的四个隔离级别(mysql 四个隔离级别),下面一起看看理解mysql的四个隔离级别(mysql 四个隔离级别)相关资讯。
首先,第一件事是什么事务是一个应用中的一系列紧密操作,所有操作都必须成功完成,否则每个操作中的所有更改都将被撤销,即事务是原子性的,事务中的一系列操作要么成功,要么不成功。一个交易有两种结局。当所有步骤都成功执行时,事务被提交。如果其中一个步骤失败,将发生回滚操作,从撤销到事务开始的操作将被撤销。两个。交易的酸易有四个特征:原子性、一致性、隔离性和持久性。这四种特性称为短酸特性。1。原子性,事务是数据库的逻辑单元,包含在事务业务中。2。一致性,事务执行的结果必然是数据库从一个一致性变成另一个一致性。所以当数据库只包含事务提交成功的结果时,意味着数据库处于一致状态。如果数据库系统的运行出现故障,对于这些未完成的事务中的一部分事务还没有中断,对数据库的更改已经写入物理数据库,处于不良状态或不一致状态。3、隔离。一个事务的执行不受其他事务的干扰。也就是说,一个事务中使用的操作和数据是与其他并发事务隔离的,执行的各种事务不能互相干扰。4。坚持也叫永久。一旦事务被提交,它对数据库中数据的更改应该是永久的。后续操作或失败不应对执行结果产生任何影响。第三,mysql 的四种隔离级别sql标准定义了四种类型的隔离级别,包括一些特定的规则来限制事务内外可见和不可见的变化,而低级别的隔离级别通常支持更高的并发处理,系统开销也更低。read uncommitted(读取未提交的内容)在这个隔离级别,所有事务都可以看到其他未提交事务的执行结果。这种隔离级别在实际应用中很少使用,因为它的性能并不比其他级别好。read commit(读提交)这是大多数数据库系统的默认隔离级别(不是mysql的默认)。它满足了隔离的简单定义:事务只能看到提交给公司的变更。这个隔离级别还支持所谓的不可重复读取。因为同一事务的其他实例在实例处理期间可能会有新的提交,所以同一选择可能会返回不同的结果。可重复读取(重读)这是mysql默认的事务隔离级别,这样同一个事务的多个实例在读取数据的同时可以看到同一个数据行,但理论上这可能会导致另一个棘手的问题:幻影读取。简单来说,魔读,当用户读取一系列数据行时,在另一个事务中插入一个新行range。当用户读取数据行时,将会出现一个新的幻像行。在…里nodb和falcon存储引擎通过多版本并发控制(mvcc)机制解决了这个问题。序列化(serialization)这是最高级别的隔离,这使得不可能通过强制事务相互来解决幻影问题。简而言之,它是每个读取数据线上的共享锁。在这个级别,可能会导致大量超时和锁争用。这四个隔离级别是用不同的锁类型实现的。如果读取相同的数据,很容易出现问题:脏读(dirty reading):一个事务更新数据,另一个事务读取相同的数据。由于某些原因,上一个回滚操作和下一个office读取的数据会不正确。can 不重复阅读,可以 不重复。在事务的两次查询中,数据不一致。这可能是两个查询过程,其中插入事务更新原始数据。(幽灵阅读)幽灵阅读:两次查询中,事务数据个数不一致,比如事务查询系列(行)数据和另一个事务,但这时有新的数据进入列,前一个事务在下一个查询中,你会发现前几列数据都没有。在mysql中,实现了这四个隔离级别,可能出现的问题如下:4。测试mysql隔离级别接下来,我们将使用mysql 的客户端程序测试这些隔离级别。测试数据库是演示,表是测试;表格结构是:两个命令行客户端是a和b;不断改变a端的隔离等级,修改b端的数据。(1)设置未提交读取(uncommitted reading)的隔离级别。答:启动事务,当数据处于初始状态时。b:启动事务并更新数据,但是不要 不要犯错误。答:再看一遍数据,发现被修改了。这叫下流阅读。b:回滚事务a:再次读取数据,将数据恢复到初始状态。从上面的实验可以得出结论,事务b更新了一条记录,但是没有提交。此时,事务a可以查询未提交的记录,导致脏读,未提交读是最低级别的隔离。(2)客户端a的事务隔离级别设置为读提交(commit read)。答:开始交易,数据处于初始状态。b:启动事务并更新数据,但是不要 不要提交。答:再次读取数据,发现数据没有被修改。b:提交一个事务a:再次读取数据,发现数据有变化,说明b在事务中是a提交的,这叫不重复。通过上面的实验可以得出,读隔离级别已经提交,解决了脏读的问题,但是有一个问题不需要重复读,就是事务的查询数据不匹配,因为b更新了数据之间的查询,只允许提交读的记录,但是不需要重复读。(3)将a的隔离级别设置为可重复。取(可重复读数)。答:启动事务,当数据处于初始状态时。b:启动事务并更新数据,但是不要 不要提交。答:再次读取数据,发现数据没有被修改。b:提交一个事务a:再次读取数据,发现数据没有变化,说明这次又可以读取了。b:插入一个新数据并提交。答:又看了一遍数据,发现数据没有变化。虽然可以反复读取,但是发现不是最新的数据。这就是所谓的魔法阅读。回答:提交该事务,再次读取数据,发现读取正常。从上面的实验结果可以得出,可重复读取隔离级别只能读取记录,当一个事务读取其他事务两次时,更新另一个部门的记录,但这个事务不需要与其他事务序列化。例如,当事务可以找到由提交的事务更新的记录时,它可能会导致图像读取问题。和上面的实验一样,不存在数据读取的问题。(4)设置隔离级别serializable a:启动事务,此时数据处于初始状态。b:我发现b这个时候在等,因为a s的事务还没有提交,我只能等待(此时b可能在等待超时)。答案:提交事务b:找到成功插入的完全序列化的锁域。如果一个事务查询相同的数据,它必须等到前一个事务完成并且锁被锁定。这是一个完整的隔离级别,将锁定相应的数据表,从而有一个有效的问题。综上所述,这就是本文的全部内容。希望这篇文章的内容对大家有所帮助 的研究。有问题可以留言交流。
了解更多理解mysql的四个隔离级别(mysql 四个隔离级别)相关内容请关注本站点。
办公电脑需要什么配置的电脑,办公型电脑的配置
什么轻薄本性价比高(哪款轻薄本值得购买)
电脑开不开机了维修需要多少钱,电脑开不了机一般拿去修需要多少钱
我的世界hmcl启动器启动失败怎么办(我的世界hmcl启动器下载链接)
2018年惠普笔记本型号,2018的新款笔记本包括什么牌子什么型号
深入理解mysql的四个隔离级别分别为(mysql的四种隔离级别)
自己组装台式电脑需要什么东西,组装一台台式电脑需要哪些零件
魅蓝手机配置怎么查,魅蓝note6手机参数配置
苹果手机怎么变成中文版本(苹果手机如果怎么变中文)
苹果电脑查看图片软件(用电脑查看苹果手机图片)
htc g10怎么截屏,HTC手机怎么截屏
钉钉的普通群和内部群有什么区别(钉钉群普通群和内部群)
美图秀秀萌拍怎么添加照片(美图秀秀萌拍素材在哪)
小米怎么关闭更新系统更新系统更新提醒吗,如何取消小米手机系统更新提示
192.168.233.1惠普打印机设置网络admin(1921682331惠普打印机设置网络)
广西最近几年的地震(充电器线裂开了变绿色)_1
怎样提取微信聊天记录转发(怎样提取微信聊天记录作为证据)
vivos6屏幕多大尺寸(vivos6的屏幕尺寸)
vivo手机连上wifi怎么上不了网,为什么VIVO手机连上WiFi后不能上网
美图m6s配置怎么样,美图M8和M6s哪个好