当前位置: 首页 > news >正文

国外还有那种做电商的网站/谷歌推广费用

国外还有那种做电商的网站,谷歌推广费用,网站建设公司哈,怎么查看网站有没有做竞价前言最近在准备春招的过程中顺手复习了一下MySQL的事务隔离级别,现在整理出来和各位同学一起学习,若有不对的地方请指教。在这之前先看看相关的面试题:MySQL有哪些事务隔离级别?Read Commit(读已提交)级别是如何解决脏读的&#x…

前言

最近在准备春招的过程中顺手复习了一下MySQL的事务隔离级别,现在整理出来和各位同学一起学习,若有不对的地方请指教。

在这之前先看看相关的面试题:

MySQL有哪些事务隔离级别?

Read Commit(读已提交)级别是如何解决脏读的?

Repeatable Read(可重复读)级别是如何解决不可重复读的?

MySQL是如何解决幻读的?MVCC可以解决幻读问题吗?

相关概念

首先先介绍一下脏读、不可重复读和幻读:

脏读:指一个事务可以看到另一个事务未提交的数据。

比如说事务A修改了一个值但是还未提交,这时事务B可以看到A修改的值,这就是脏读。

不可重复读:一个事务执行两次同样的查询语句,前后得出的数据却不一致。

比如说事务A执行了select语句,事务B修改了某个值,事务A再次执行select语句时发现结果和上次不一致,因此叫做不可重复读。

幻读:在同一个事务中,同一个查询多次返回的记录行数不一致(这里的结果特指查询到的记录行数,幻读可以看做不可重复读的一种特殊情况)。

比如说事务A执行了select语句,事务B插入数据,事务A再次执行select语句时发现多了几条记录,好像出现了幻觉一样,因此叫做幻读。

MySQL有哪些事务隔离级别?

级别从低到高分别是:未提交读、已提交读、可重复读、串行化

下图是各个隔离级别以及可能会出现的问题:

6482ff9595ea1b010c659459fae197a5.png

Read Commit(读已提交)级别是如何解决脏读的?

先说结论:通过改变锁的释放时机来解决脏读问题。

首先先了解一下为什么会出现脏读?原因就是在未提交读这个级别下,当事务A修改了数据之后就立马释放了锁,因此事务B可以读取到这个未提交的数据。

在已提交读级别下写操作加的锁会到事务提交后释放,所以事务B不会读到事务A未提交的数据,通过改变锁的释放时机解决了脏读的问题。

Repeatable Read(可重复读)级别是如何解决不可重复读的?

结论:可重复读级别就是通过MVCC机制来解决不可重复读问题的

MVCC机制(多版本并发控制)就我个人理解来说其实就是给每行数据都添加了几个隐藏字段,用来表示数据的版本号,即一个数据在mysql中会有多个不同的版本,想深入了解MVCC请参考:MVCC机制

MVCC就是给每一行都都有个事务版本号,假设一条链表第一个节点是最新的数据,越后数据越旧,当有一个快照读操作过来后,会遍历链表,找到第一个当前事务可见的数据。

有了MVCC之后我们可以把SQL操作分为两类:

快照读

读取当前事务可见的数据,默认的select操作就是快照读,读的是历史版本的数据。

当前读

读取最新的数据,除了默认select操作外的select..for update、update、insert、delete等操作都是当前读,读取的都是最新的数据。

现在我们有了MVCC,当事务A执行一个普通的select操作(快照读),MySQL会把这次读取的数据保存起来,在这期间不管事务B执行update或是insert操作,事务A再次执行select操作读取到的数据是不会变的,因此通过可重复读级别通过MVCC解决了不可重复读问题,顺便解决了部分的幻读问题,没错MVCC并没有解决所有的幻读问题,只是解决了一部分,那是如何彻底解决幻读问题的呢?请接着往后看。

MySQL是如何解决幻读的?MVCC可以解决幻读问题吗?

先说结论:MVCC并不能解决所有的幻读问题,MySQL是通过MVCC + Next Key Lock来解决幻读问题的。

为什么MVCC不能解决幻读?

因为当事务执行的是加锁的select操作(当前读),每次执行都是读取最新的数据,事务A是可以看到事务B修改的数据的,那么还是会出现幻读的问题,因此MySQL引入了一种叫做Next Key Lock的算法,简单来说就是对一个范围加锁,这样子当事务A执行select..for update时会对数据加锁,这时事务B是无法执行update、insert等操作的,因此MySQL是通过MVCC + Next Key Lock来解决幻读问题的,有关Next Key Lock请参考Innodb锁机制:Next-Key Lock 浅谈

总结

有关MySQL隔离级别就讲到这里啦,这些都是本人的一些心得,如果有什么不对的地方请各位大佬们多多指教!

http://www.lbrq.cn/news/828919.html

相关文章:

  • 人民大学网站建设/涟源网站seo
  • 做旅游网站宣传/游戏广告联盟平台
  • 黔南网站建设/成都seo培
  • 做博客网站需要工具吗/免费推广软件哪个好
  • wordpress启用多站点/优化关键词的方法正确的是
  • 链家网/如何做好网站站内优化
  • 网站建设毕业论文5000字/搜索引擎排名的三大指标
  • 网页与网站的区别/百度竞价排名商业模式
  • 西安建筑网站建设/宁波seo外包推广排名
  • 国外优秀设计网站/seo交流
  • 坪山网站开发/百度广告大全
  • asp.net做的音乐网站/推广工作的流程及内容
  • 个人摄影网站模版/网站竞价推广都有哪些
  • 做静态网站软件/优化大师的三大功能
  • 毕设做网站和app/网推团队
  • 公司网站域名如何续费/百度客服投诉中心
  • 宜春的网站建设公司/手机网页设计制作网站
  • 沈阳企业网站建设公司/知识营销
  • 做网站怎么加弹幕/网络推广公司口碑
  • 短视频免费素材网站/人工智能培训机构
  • 以投资思维做网站/second是什么意思
  • 建立购物网站 app/2023新闻摘抄大全
  • 上海市建设局官方网站/金花关键词工具
  • 免费可以做旅游海报 的网站/有什么好用的搜索引擎
  • 做网站什么商品好/bt磁力猪
  • 哈尔滨网站优化/全网引流推广
  • 河南省建设厅督察网站/百度灰色关键词技术
  • 怎么做网站小编/微商怎么引流被加精准粉
  • 安徽康东建设工程有限公司网站/长沙seo网络推广
  • 服装饰品网站建设/360网站关键词排名优化
  • 从零手写红黑树(C++实现详解)
  • 智能体之变:深度解析OpenAI ChatGPT Agent如何重塑人机协作的未来
  • Java大视界:Java大数据在智能医疗电子健康档案数据挖掘与健康服务创新>
  • undefined reference to ‘end‘
  • 持续同调文章阅读(四)
  • 《Web安全之深度学习实战》读书笔记总结