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

建设网站公司简介北京网页设计设计培训

建设网站公司简介,北京网页设计设计培训,华为网站建设策划书,wordpress 生成主题包前提概要 你肯定不陌生#xff0c;和数据库打交道的时候#xff0c;我们总是会用到事务。最经典的例子就 是转账#xff0c;你要给朋友小王转 100 块钱#xff0c;而此时你的银行卡只有 100 块钱。 转账过程具体到程序里会有一系列的操作#xff0c;比如查询余额、做加减法…前提概要 你肯定不陌生和数据库打交道的时候我们总是会用到事务。最经典的例子就 是转账你要给朋友小王转 100 块钱而此时你的银行卡只有 100 块钱。 转账过程具体到程序里会有一系列的操作比如查询余额、做加减法、更新余额等这些操 作必须保证是一体的不然等程序查完之后还没做减法之前你这 100 块钱完全可以 借着这个时间差再查一次然后再给另外一个朋友转账如果银行这么整不就乱了么这 时就要用到“事务”这个概念了。 简单来说事务就是要保证一组数据库操作要么全部成功要么全部失败。在 MySQL 中事务支持是在引擎层实现的。你现在知道MySQL 是一个支持多引擎的系统但并不 是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务这也是MyISAM 被 InnoDB 取代的重要原因之一。 下边这篇文章是以 InnoDB 为例剖析 MySQL 在事务支持方面的特定实现 隔离性与隔离级别 提到事务你肯定会想到 ACIDAtomicity、Consistency、Isolation、Durability即原 子性、一致性、隔离性、持久性今天我们就来说说其中 I也就是“隔离性 当数据库上有多个事务同时执行的时候就可能出现脏读dirty read、不可重复读 non-repeatable read、幻读phantom read的问题为了解决这些问题就有 了“隔离级别”的概念 知识补给 脏读dirty read 不可重复读non-repeatable read 幻读phantom read 直接就是偷懒 结合下边讲的那几个隔离类型更好理解         回归正题 在谈隔离级别之前你首先要知道你隔离得越严实效率就会越低。因此很多时候我们 都要在二者之间寻找一个平衡点。SQL 标准的事务隔离级别包括读未提交read uncommitted、读提交read committed、可重复读repeatable read和串行化 serializable 读未提交是指一个事务还没提交时它做的变更就能被别的事务看到。读提交是指一个事务提交之后它做的变更才会被其他事务看到。可重复读是指一个事务执行过程中看到的数据总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下未提交变更对其他事务也是不可见的。串行化顾名思义是对于同一行记录“写”会加“写锁”“读”会加“读锁”。当出现读写锁冲突的时候后访问的事务必须等前一个事务执行完成才能继续执行。 其中“读提交”和“可重复读”比较难理解所以我用一个例子说明这几种隔离级别。假设 数据表 T 中只有一列其中一行的值为 1下面是按照时间顺序执行两个事务的行为。 咱们上个表借着这个表来聊这个隔离级别 事务A事务B启动事务 查询得到1启动事务查询得到值1将1改成2查询得到值V1提交事务B查询得到值V2提交事务A查询得到值V3 我们来看看在不同的隔离级别下事务 A 会有哪些不同的返回结果也就是图里面 V1、 V2、V3 的返回值分别是什么。 若隔离级别是“读未提交” 则 V1 的值就是 2。这时候事务 B 虽然还没有提交但是 结果已经被 A 看到了。因此V2、V3 也都是 2。 若隔离级别是“读提交”则 V1 是 1V2 的值是 2。事务 B 的更新在提交后才能被 A 看到。所以 V3 的值也是 2。 若隔离级别是“可重复读”则 V1、V2 是 1V3 是 2。之所以 V2 还是 1遵循的就 是这个要求事务在执行期间看到的数据前后必须是一致的. 若隔离级别是“串行化”则在事务 B 执行“将 1 改成 2”的时候会被锁住。直到事 务 A 提交后事务 B 才可以继续执行。所以从 A 的角度看 V1、V2 值是 1V3 的值 是 2。 说一个跟更更更更简单的理解 在实现上数据库里面会创建一个视图访问的时候以视图的逻辑结果为准。在“可重复 读”隔离级别下这个视图是在事务启动时创建的整个事务存在期间都用这个视图。 在“读提交”隔离级别下这个视图是在每个 SQL 语句开始执行的时候创建的。这里需要 注意的是“读未提交”隔离级别下直接返回记录上的最新值没有视图概念而“串行 化”隔离级别下直接用加锁的方式来避免并行访问 我们可以看到在不同的隔离级别下数据库行为是有所不同的。Oracle 数据库的默认隔离 级别其实就是“读提交”因此对于一些从 Oracle 迁移到 MySQL 的应用为保证数据库 隔离级别的一致你一定要记得将 MySQL 的隔离级别设置为“读提交 配置的方式是将启动参数 transaction-isolation 的值设置成 READ-COMMITTED。你 可以用 show variables 来查看当前的值 总结来说存在即合理哪个隔离级别都有它自己的使用场景你要根据自己的业务情况来 定。我想你可能会问那什么时候需要“可重复读”的场景呢那么肥春根据所学给你讲讲 假设你在管理一个个人银行账户表。一个表存了每个月月底的余额一个表存了账单明细。 这时候你要做数据校对也就是判断上个月的余额和当前余额的差额是否与本月的账单明 细一致。你一定希望在校对过程中即使有用户发生了一笔新的交易也不影响你的校对结 果。 这时候使用“可重复读”隔离级别就很方便。事务启动时的视图可以认为是静态的不受其 他事务更新的影响。 事务隔离的实现 理解了事务的隔离级别我们再来看看事务隔离具体是怎么实现的。这里我们展开说明“可 重复读”。 在 MySQL 中实际上每条记录在更新的时候都会同时记录一条回滚操作。日志操作记录上的最新 值通过回滚操作都可以得到前一个状态的值。 说一下回滚吧 假设一个值从 1 被按顺序改成了 2、3、4在回滚日志里面就会有类似下面的记录。 当前值是 4但是在查询这条记录的时候不同时刻启动的事务会有不同的 read-view。如 图中看到的在视图 A、B、C 里面这一个记录的值分别是 1、2、4同一条记录在系统 中可以存在多个版本就是数据库的多版本并发控制MVCC。对于 read-view A要 得到 1就必须将当前值依次执行图中所有的回滚操作得到 同时你会发现即使现在有另外一个事务正在将 4 改成 5这个事务跟 read-view A、B、 C 对应的事务是不会冲突的。 你一定会问回滚日志总不能一直保留吧什么时候删除呢答案是在不需要的时候才删 除。也就是说系统会判断当没有事务再需要用到这些回滚日志时回滚日志会被删除。 什么时候才不需要了呢就是当系统里没有比这个回滚日志更早的 read-view 的时候。 基于上面的说明我们来讨论一下为什么建议尽量不要使用长事务 长事务意味着系统里会存在很老的事务视图。由于这些事务随时可能访问数据库所以这个事务提交之前数据库里面他可能用到的回滚记录都必须保留这就会导致大连占用存储空间。初次长事务还占用锁资源。 事务的启动方式 并不是有意使用长事务通常是由于误用所致 MySQL 的事务启动方式有以下几种 显式启动事务语句 begin 或 start transaction。配套的提交语句是 commit回滚语 句是 rollback set autocommit0这个命令会将这个线程的自动提交关掉。意味着如果你只执行一 个 select 语句这个事务就启动了而且并不会自动提交。这个事务持续存在直到你主动执行 commit 或 rollback 语句或者断开连接。有些客户端连接框架会默认连接成功后先执行一个 set autocommit0 的命令。这就导致 接下来的查询都在事务中如果是长连接就导致了意外的长事务。 因此我会建议你总是使用 set autocommit1, 通过显式语句的方式来启动事务。
http://www.hkea.cn/news/14559443/

相关文章:

  • 注册号域名后 怎么建设网站免费主页空间的网站
  • 3.0效果网站建设多少钱lnmp搭建后怎么做网站
  • 连云港做网站推广宁波 做网站
  • ssh做的网站股权分配系统建设网站
  • 华建设计网站如何在修改wordpress
  • 网站 空间 下载企业文化展厅设计方案
  • 建个人网站百度最新版本2022
  • 网站用哪些系统做的wordpress doc嵌入
  • 成都网站建设多少费用dedecms 网站重复文章
  • 网站推广的策略有哪些福建个人网站备案
  • 品牌商城网站制作公司网业升级
  • 公司网站建设要多少钱微信小程序开发商家
  • 大连做网站科技有限公司山东大连
  • 网页制作作业模板优化软件是什么意思
  • 网站后端开发在wordpress中rss订阅的步骤是什么?
  • 中国中国建设银行网站网站建设的数据导入导出
  • 做h5那个网站模板好什么网站做网页好
  • 百元建站wordpress 网页排版
  • html5 响应式音乐网站微信公众号平台开发文档
  • 网站页面风格分类攀枝花仁和住房和城乡建设局网站
  • 网站开发范围免费数据分析网站
  • 响应式手机网站制作wordpress 主题 知乎
  • 厦门教育平台网站建设深圳电器公司怎么样
  • 英雄联盟网站源码手机图片网站 模版
  • 中山网站建设最好的公司赣州门户网站建设
  • 建设淘宝网站需要多少钱怎么开发销售网站
  • 开发一个网站大概多少钱天河做网站开发
  • 重庆公司网站搭建公司推荐项目网络技术
  • 机构类网站有哪些西安附近网络营销运营公司
  • 网站页面设计制作搜索引擎对网站推广的作用