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

幕墙设计培训乡网站建设淄博网站建设多

幕墙设计培训乡网站建设,淄博网站建设多,做网站必须有云虚拟主机,网站建设定义是什么意思个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】#x1f388; 本专栏旨在分享学习MySQL的一点学习心得#xff0c;欢迎大家在评论区讨论#x1f48c; 目录 一、事务… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】 本专栏旨在分享学习MySQL的一点学习心得欢迎大家在评论区讨论 目录 一、事务二、MySQL事务的基本特性三、四种事务的隔离级别 一、事务 事务概念 事务可以看作是由一个或多个 SQL 语句组成的逻辑单元在这个单元中每个 SQL 语句都是相互依赖的。整个事务单元被视为一个不可分割的整体比如我们高中物理学习到的原子原子就是不可分割的最小单位要么全部执行成功要么全部回滚。 举个栗子假设现在事务中存在3个操作我们先执行第一个操作在执行第二个操作最后在执行第三个操作。好了如果执行到第二个操作的过程中执行失败了MySQL就会自动把之前已经执行成功的操作进行还原此操作我们称之为回滚还原成最初什么都没有执行的状态。 回滚是如何实现的 把数据库中执行的每个SQL操作都记录下来通过数据库来记录事务操作的中间过程如果需要回滚就需要按照之前的逆操作来进行执行就可以了比如上个操作是插入那么逆操作就是删除上个操作是修改逆操作改回去就好了。 再比如如果我们执行某个事务的第二步过程中程序崩溃了此时我们就需要对第一步就行回滚操作即把对第一步执行的操作给修改还原回去。即使是数据库挂了或者数据库服务器重启了我们也无需担心因为数据库通过日志来记录事务执行过程中的中间过程日志中的数据是始终存储在硬盘上的。如果是数据库服务器重启的话就会在服务器重启之后继续对之前没有回滚完的情况进行处理。 事务最重要的一个特性就是原子性了原子性又是通过回滚操作来保证的而回滚则是通过特定的日志来实现的。 一个事务中必须以这两个操作为结尾commit或rollback如果没有这两个操作的话那么接下来各种mysql都会被认为是工作中的一部分。如果没有这两个操作的话那么接下来所有的SQL操作都会是认为是事务的一部分。 二、MySQL事务的基本特性 原子性事务可以看作是一个或多个SQL语句组成的逻辑单元逻辑单元中的每个SQL语句都是相互依赖的而整个逻辑单元就是一个不可分割的整体存在类似于物理学到的原子原子就是不可分割的最小单位存在。一致性事务执行之前和事务执行之后能够对应上不能离谱约束可以检查数据是否合理回滚机制也可以支持一致性。持久性我们知道硬盘上的存储的数据都是持久化存储。而MySQL中的事务执行的各种操作都是持久生效的最终都会存储到硬盘中事务一旦执行成功这里所有操作产生的修改都会写到硬盘中去。隔离性重点并发执行事务的时候隔离性会在执行效率和数据可靠之间做出一个权衡隔离描述的就是同时执行的事务之间产生的相互影响。隔离性越高并发性就会越低数据就越可靠性能就会越低。 如何理解隔离性中的并发 数据库是一个客户端服务器结构的程序。服务器可以在同一时刻给多个用户提供服务。且多个客户端都能给服务器提交事务。 假设提交的两个事务是修改的不同的数据库或者不同的表那么这两个事务之间是不会产生相呼影响的如果这两个事务是修改的同一个表此时就可能会出现一些问题。 我们拿两个事务来进行举例假设现在有两个客户端都把自己的事务提交给服务器宏观上来看这两个事务是同时提交的但在微观上来讲这两个事务总是要分一个先后顺序的。而当事务的执行顺序存在差异的时候就有可能会影响到最终的执行结果。这就是并发执行事务所带来的一些问题。 并发执行事务时可能会出现的问题 问题1脏读 脏读Dirty Read是指一个事务读取了另一个事务尚未提交的数据。换句话说一个事务读取到了另一个事务“脏”的数据可以理解为一个临时的数据即还没有被持久化到数据库中。 假设有两个事务事务A和事务B。事务A执行了一条更新操作但还未提交事务B在此时读取了事务A尚未提交的数据。如果事务A回滚了那么事务B读取到的数据就是无效的或者不准确的因此称为脏读。 如何解决脏读问题 给写操作加锁事务A在进行写操作的时候其它事务无法读取事务A进行写操作期间的数据但可以读取到事务A开始写操作之前的数据只有事务A的写操作完成提交之后其它事务才能读取到事务A中的最新数据。 引入了写加锁之后降低了事务之间的并发性提高了隔离性效率会降低但是提高了数据的可靠性。 问题2不可重复读 不可重复读在同一个读取数据的事务中可能会涉及到多个读操作而每个读操作读取的数据都不一样。这里每次读操作读取的数据并非是脏数据我们可以将其理解为不同版本的数据 如何解决不可重复读 给读操作加锁给读操作加锁的意思就是在读取一个事务数据的过程中我们是不能让这个事务进行写操作的。 我们再来区分一下给读操作加锁和给写操作加锁 给写操作加锁的意思就是我们在对事务A进行写操作的时候其它事务是无法读取到事务A中的最新数据只能读取到事务A进行写操作之前的旧数据只有当事务A提交写操作之后其它事务才能读取到事务A中的最新数据。 给读操作加锁的意思我们在读取事务A数据的时候此时事务A是不能开启另外一个事务进行写操作的。 读操作加锁之后事务之间的并发性就会进一步降低隔离性增加当然效率降低数据变得更加可靠。 问题3幻读可以理解为幻读就是不可重复读的特殊情况 幻读指的是一个事务在多次读的时候虽然每次读到的数据的值是一样的但是每次读的结果集是不同的。比如第一次读读到的是100条记录第二次读读到的变成了101条记录。第一次读到的100条记录和第二次读到的100条记录是完全相同的。只不过第二次多读了1条记录。 如何解决幻读串行化 串行化就是彻底的放弃并发执行即所有的事务变成了一个挨一个的串行执行即执行完一个事务后再执行另外一个事务。 串行话是并发性最低的隔离性最强的效率最低数据也是更加的可靠。 在并发性事务执行的过程中可能会出现以下问题 脏读写加锁解决读到了写事务提交之前的中间数据即临时数据不可重复读读加锁解决一个事务之内多次读取到一个数据发现每次读取的数据都是不一样的。幻读解决方法就是串行化完全放弃并发执行一个事务之内多次读到的数据的值是相同的但是每次读取的结果集不同。 三、四种事务的隔离级别 针对并发事务执行的过程中可能出现的问题MySQL提供了四种事务的隔离级别 read uncommittedRU允许读未提交的数据。此时存在脏读、不可重复读、幻读的问题事务之间隔离性最低并发程度最高效率最高且数据的可靠性最低。read committed(RC)只允许读取已提交的数据相当于给写加锁解决了脏读的问题但是还存在不可重复读和幻读的问题。事务间的隔离性提高并发性降低。数据更可靠与此同时效率降低。repeatable read(默认的隔离级别)(RR)可以重复读取数据相当于给写操作和读操作都加锁。事务间的隔离性提高并发性降低效率降低且数据可靠性提高。解决了脏读和不可重复读的问题但依然存在幻读的问题。serializable事务彻底地进行串行执行。解决了脏读、不可重复读、幻读这三个问题。此时事务间的隔离性最高并发性最低或者说没有并发性数据最可靠效率也最低。 以上就是MySQL中四种事务的隔离性级别当然要根据实际的需求场景来决定具体使用哪一种隔离级别尽量找到一个效率和可靠性都能够接收的情况。大部分情况下使用默认的MySQL隔离性级别就可以了repeatable read。 好了以上就是本文的全部内容了。讲解了MySQL中事务的相关内容。大家一定要好好掌握这一部分的内容因为面试中事务这一部分算是数据库中比较高频的内容尤其是隔离性这里。 嗯就到这里吧再见啦友友们
http://www.pierceye.com/news/874300/

相关文章:

  • 哪个网站可以接图纸做返利网站怎么做的
  • 旅游网站建设国内外现状辽阳专业建设网站公司
  • 免费视频模板网站wordpress不写代码
  • 设计网站公司 露 联湖南岚鸿小程序网站开发公司
  • 聊城网站设计seo公司重庆
  • 网站布局技术厦门网站建设680元
  • 深圳物流公司网站建e网怎么做效果图
  • 做营销网站公司建个个人网站一年多少钱
  • 阆中网站网站建设代理网络服务器
  • 企业网站新模式seo排名推广工具
  • 山东做网站三五个人网页设计作品简单
  • 福州网站建设软件网站做了301怎么查看跳转前网站
  • 网站开发竞品分析网站开发与规划
  • 香山红叶建设有限公司网站网络营销方式落后的表现
  • 合肥百姓网网站建设263云通信官方网站
  • 深圳建设网站seo 手机电商数据分析师
  • 网站内外链怎么做公司建设包括哪些方面
  • 织梦网站环境搭建电子邮件怎么注册
  • 企业营销类专业网站app设计尺寸规范
  • 奈曼旗建设局网站建设旅游门户网站
  • 网站设计一般会遇到哪些问题wordpress文章关闭缩略图
  • 优质东莞网站制作公司thinkphp网站源码下载
  • 公司网站做一下多少钱最吉利旺财的公司名字
  • 网站建设维护及使用管理办法营销策划的步骤
  • 优秀网站设计案例在家开个人工作室违法吗
  • 腾讯云建设网站wordpress仿知乎社区
  • 《网站开发技术》模板linchong.wordpress
  • 找做企业网站论文旅游网站建设
  • 类似情侣空间的网站开发seo外推软件
  • 网站建设策划方案怎么写工业品网络营销