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

做网站设计的网页加速器免费版 安卓

做网站设计的,网页加速器免费版 安卓,中国企业网站建设,未来的门户网站事务由哪些特性 原子性#xff08;Atomicity#xff09;#xff1a;一个事务中的所有操作#xff0c;要么全部完成#xff0c;要么全部不完成#xff0c;不会结束在中间某个环节#xff0c;而且事务在执行过程中发生错误#xff0c;会被回滚到事务开始前的状态#xf…事务由哪些特性 原子性Atomicity一个事务中的所有操作要么全部完成要么全部不完成不会结束在中间某个环节而且事务在执行过程中发生错误会被回滚到事务开始前的状态就像这个事务从来没有执行过一样 一致性Consistency是指事务操作前和操作后数据满足完整性约束数据库保持一致性状态。 隔离性Isolation数据库允许多个并发事务同时对其数据进行读写和修改的能力隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致因为多个事务同时使用相同的数据时不会相互干扰每个事务都有一个完整的数据空间对其他并发事务是隔离的。 持久性Durability事务处理结束后对数据的修改就是永久的即便系统故障也不会丢失。 InnoDB 引擎通过什么技术来保证事务的这四个特性的呢 持久性是通过 redo log 重做日志来保证的 原子性是通过 undo log回滚日志 来保证的 隔离性是通过 MVCC多版本并发控制 或锁机制来保证的 一致性则是通过持久性原子性隔离性来保证 并行事务会引发什么 在同时处理多个事务的时候就可能出现脏读dirty read、不可重复读non-repeatable read、幻读phantom read的问题。 脏读 如果一个事务「读到」了另一个「未提交事务修改过的数据」就意味着发生了「脏读」现象。 如果在上面这种情况事务 A 发生了回滚那么事务 B 刚才得到的数据就是过期的数据这种现象就被称为脏读。 不可重复读 在一个事务内多次读取同一个数据如果出现前后两次读到的数据不一样的情况就意味着发生了「不可重复读」现象。 在这过程中如果事务 B 更新了这条数据并提交了事务那么当事务 A 再次读取该数据时就会发现前后两次读到的数据是不一致的这种现象就被称为不可重复读。 幻读 在一个事务内多次查询某个符合查询条件的「记录数量」如果出现前后两次查询到的记录数量不一样的情况就意味着发生了「幻读」现象。 事务的隔离级别由哪些 脏读、不可重复读、幻读」的现象严重性排序 使用四种隔离级别来规避这些现象隔离级别越高性能效率就越低 读未提交read uncommitted指一个事务还没提交时它做的变更就能被其他事务看到 读提交read committed指一个事务提交之后它做的变更才能被其他事务看到 可重复读repeatable read指一个事务执行过程中看到的数据一直跟这个事务启动时看到的数据是一致的MySQL InnoDB 引擎的默认隔离级别只能看见启动事务时的数据 串行化serializable 会对记录加上读写锁在多个事务对这条记录进行读写操作时如果发生了读写冲突的时候后访问的事务必须等前一个事务执行完成才能继续执行 不同的隔离级别并发事务时可能发生的现象也会不同 MySQL 虽然支持 4 种隔离级别但是与SQL 标准中规定的各级隔离级别允许发生的现象却有些出入 如何设置事务的隔离级别 修改事务的隔离级别SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level; level: {REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE } 在 SET 关键字后可以放置 GLOBAL 关键字、 SESSION 关键字或者什么都不放这样会对不同范围的事务产生不同的影响 使用 GLOBAL 关键字在全局范围影响 使用 SESSION 关键字在会话范围影响 上述两个关键字都不用只对执行语句后的下一个事务产生影响 MySQL InnoDB 引擎的默认隔离级别虽然是「可重复读」但是它很大程度上避免幻读现象并不是完全解决了解决的方案有两种 针对快照读普通 select 语句是通过 MVCC 方式解决了幻读因为可重复读隔离级别下事务执行过程中看到的数据一直跟这个事务启动时看到的数据是一致的即使中途有其他事务插入了一条数据是查询不出来这条数据的所以就很好了避免幻读问题。 针对当前读select ... for update 等语句是通过 next-key lock记录锁间隙锁方式解决了幻读因为当执行 select ... for update 语句的时候会加上 next-key lock如果有其他事务在 next-key lock 锁范围内插入了一条记录那么这个插入语句就会被阻塞无法成功插入所以就很好了避免幻读问题。 四种隔离级别具体是如何实现的呢 对于「读未提交」隔离级别的事务来说因为可以读到未提交事务修改的数据所以直接读取最新的数据就好了 对于「串行化」隔离级别的事务来说通过加读写锁的方式来避免并行访问 对于「读提交」和「可重复读」隔离级别的事务来说它们是通过 Read View 来实现的它们的区别在于创建 Read View 的时机不同可以把 Read View 理解成一个数据快照就像相机拍照那样定格某一时刻的风景。「读提交」隔离级别是在「每个语句执行前」都会重新生成一个 Read View而「可重复读」隔离级别是「启动事务时」生成一个 Read View然后整个事务期间都在用这个 Read View。 执行「开始事务」命令并不意味着启动了事务。在 MySQL 有两种开启事务的命令分别是 begin/start transaction 命令 事务的启动时机执行了第一条 select 语句才是事务真正启动的时机 start transaction with consistent snapshot 命令 事务的启动时机执行了 start transaction with consistent snapshot 命令就会马上启动事务 Read View 在 MVCC 里是如何工作的 假如另一个事务已经修改了记录但是尚未提交 是不能直接读取最新版本的记录的核心问题就是需要判断一下版本链中的哪个版本是当前事务可见的,设计 InnoDB 的人提出了一个 ReadView 的概念。 Read View 结果及其作用 m_ids 指的是在创建 Read View 时当前数据库中「活跃事务」的事务 id 列表注意是一个列表“活跃事务”指的就是启动了但还没提交的事务。 min_trx_id 指的是在创建 Read View 时当前数据库中「活跃事务」中事务 id 最小的事务也就是 m_ids 的最小值。 max_trx_id 这个并不是 m_ids 的最大值而是创建 Read View 时当前数据库中应该给下一个事务的 id 值也就是全局事务中最大的事务 id 值 1 creator_trx_id 指的是创建该 Read View 的事务的事务 id。 聚簇索引记录中的两个隐藏列 trx_id当一个事务对某条聚簇索引记录进行改动时就会把该事务的事务 id 记录在 trx_id 隐藏列里 roll_pointer每次对某条聚簇索引记录进行改动时都会把旧版本的记录写入到 undo 日志中然后这个隐藏列是个指针指向每一个旧版本记录于是就可以通过它找到修改前的记录。 一个事务去访问记录的时候除了自己的更新记录总是可见之外还有这几种情况可见就是可以读取到数据 如果记录的 trx_id 值小于 Read View 中的 min_trx_id 值表示这个版本的记录是在创建 Read View 前已经提交的事务生成的所以该版本的记录对当前事务可见。 如果记录的 trx_id 值大于等于 Read View 中的 max_trx_id 值表示这个版本的记录是在创建 Read View 后才启动的事务生成的所以该版本的记录对当前事务不可见。 如果记录的 trx_id 值在 Read View 的 min_trx_id 和 max_trx_id 之间需要判断 trx_id 是否在 m_ids 列表中 如果记录的 trx_id 在 m_ids 列表中表示生成该版本记录的活跃事务依然活跃着还没提交事务所以该版本的记录对当前事务不可见。 如果记录的 trx_id 不在 m_ids列表中表示生成该版本记录的活跃事务已经被提交所以该版本的记录对当前事务可见。 通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC多版本并发控制 对该记录每次更新后都会将旧值放到一条 undo日志 中就算是该记录的一个旧版本随着更新次数的增多所有的版本都会被 roll_pointer 属性连接成一个链表我们把这个链表称之为 版本链 版本链的头节点就是当前记录最新的值。另外每个版本中还包含生成该版本时对应的事务id 这个信息很重要 MVCC整体操作的流程 获取事务自己的版本号也就是事务id 获取到ReadView 查询得到数据然后与ReadView中的事务版本进行比较 如果不符合ReadView的规则就需要从Undo log中获取历史快照 最后放回符合规则的数据 可重复读是如何工作的 可重复读隔离级别是启动事务时生成一个 Read View然后整个事务期间都在用这个 Read View。 读提交是如何工作的 读提交隔离级别是在每次读取数据时都会生成一个新的 Read View。 事务期间的多次读取同一条数据前后两次读的数据可能会出现不一致因为可能这期间另外一个事务修改了该记录并提交了事务。
http://www.dnsts.com.cn/news/5366.html

相关文章:

  • 内网网站建设所需硬件设备白云怎样优化网站建设
  • 哪个厂家的广州网站建设医疗在线网站建设
  • 给网站做seo的价格域名购买后还要解析吗
  • 门户网站开发方案文档做宣传图片的软件
  • 广州技术支持 奇亿网站建设中美军事的最新消息
  • 代做设计的网站陕西建设机械股份有限公司网站
  • asp网站开发程序员做网站做好用的软件
  • 东莞拓步网站建设墙膜 东莞网站建设
  • asp网站域名网站站点是什么
  • 网站建设手机字体大小企业网站会涉及到的版权问题
  • 丽水市住房与城乡建设局网站成品网站 高端
  • 自己做网站导航免费咨询会计
  • 做电影网站前途我国档案网站建设研究论文
  • 电脑如何做网站空间化妆品网页设计论文
  • 做网站什么职业百度是网站吗
  • 知名品牌营销策划案例seo推广教学
  • 企业网站建站公司郑州外贸一般上什么网站
  • 做网站选择什么服务器0453牡丹江信息网息网
  • 企业网站分析与优化jira confluence做网站
  • 门网站建设光谷做网站推广怎么样
  • 采集更新wordpressseo推广经验
  • 试卷a《网站建设与管理》设计广告专业制作
  • 营销企业网站制作如何弃掉wordpress版权
  • win8风格网站模板朝阳商城网站建设
  • wordpress能做手机站么本溪网站设计
  • 贝贝网网站开发背景公司网站建设要注意的问题
  • 商洛网站建设求职简历住房和城乡建设岗位证书查询官网
  • 消防网站模板协会门户网站建设
  • 做视频网站 服务器网站制作语言
  • 二手物品交易网站开发环境wordpress自定义提醒用法