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

ppt下载模板免费网站门户网站建设企业

ppt下载模板免费网站,门户网站建设企业,工程项目管理软件有哪些,创建网站怎么收费我们先简单了解一下大致的刷盘时机#xff0c;然后配合两阶段提交和组提交来看 redo log的刷盘时机 MySQL 正常关闭时#xff1b;当 redo log buffer 中记录的写入量大于 redo log buffer内存空间的一半时#xff0c;会触发落盘#xff1b; PS#xff1a;为什么这里要到…我们先简单了解一下大致的刷盘时机然后配合两阶段提交和组提交来看 redo log的刷盘时机 MySQL 正常关闭时当 redo log buffer 中记录的写入量大于 redo log buffer内存空间的一半时会触发落盘 PS为什么这里要到一半就要刷了因为redo log buffer是一个环状的内存结构会被反复利用InnoDB 的后台线程每隔 1 秒将 redo log buffer 持久化到磁盘。由系统参数innodb_flush_log_at_trx_commit 参数控制。 其中innodb_flush_log_at_trx_commit 参数控制可取的值有0、1、2默认值为 1这三个值分别代表的策略如下 1、当设置该参数为 0 时表示每次事务提交时将 redo log 留在 redo log buffer 中 该模式下在事务提交时不会主动触发写入磁盘的操作。 2、当设置该参数为 1 时表示每次事务提交时都将缓存在 redo log buffer 里的 redo log 直接持久化到磁盘这样可以保证 MySQL 异常重启之后数据不会丢失。 3、当设置该参数为 2时表示每次事务提交时都只是缓存在 redo log buffer 里的 redo log 写到 redo log 文件这并不意味着写入到了磁盘而是写到了操作系统的Page Cache。 参数为1的时候会主动持久化到磁盘但是0和2不会那么这两个什么时候持久化到磁盘呢 InnoDB 的后台线程每隔 1 秒 1针对参数 0 会把缓存在 redo log buffer 中的 redo log 通过调用 write() 写到操作系统的 Page Cache然后调用 fsync() 持久化到磁盘。所以参数为 0 的策略MySQL 进程的崩溃会导致上一秒钟所有事务数据的丢失; 2针对参数 2 调用 fsync将缓存在操作系统中 Page Cache 里的 redo log 持久化到磁盘。所以参数为 2 的策略较取值为 0 情况下更安全因为 MySQL 进程的崩溃并不会丢失数据只有在操作系统崩溃或者系统断电的情况下上一秒钟所有事务数据才可能丢失。 我们可以通过系统变量来查看这个参数 mysql show variables like %innodb_flush_log_at_trx_commit%; --------------------------------------- | Variable_name | Value | --------------------------------------- | innodb_flush_log_at_trx_commit | 1 | --------------------------------------- 1 row in set (0.00 sec)好了,redo log介绍完了接着我们来介绍bin log的刷盘时机。 bin log的刷盘时机 每个线程有自己 binlog cache最终会都写到同一个 binlog 文件。 binlog的刷盘过程 1 write指的就是指把日志写入到 binlog 文件但是并没有把数据持久化到磁盘因为数据还缓存在文件系统的 page cache 里write 的写入速度还是比较快的因为不涉及磁盘 I/O。 2fsync才是将数据持久化到磁盘的操作这里就会涉及磁盘 I/O所以频繁的 fsync 会导致磁盘的 I/O 升高。 那么什么时候刷盘呢 通过sync_binlog 参数来控制数据库的 binlog 刷到磁盘上的频率 1、sync_binlog 0 的时候表示每次提交事务都只 write不 fsync后续交由操作系统决定何时将数据持久化到磁盘 2、sync_binlog 1 的时候表示每次提交事务都会 write然后马上执行 fsync 3、sync_binlog N (N1) 的时候表示每次提交事务都 write但累积 N 个事务后才 fsync。 我们通过命令行来查看参数 mysql show variables like %sync_binlog%; ---------------------- | Variable_name | Value | ---------------------- | sync_binlog | 1 | ---------------------- 1 row in set (0.00 sec)两次提交、组提交、双参数配合实现了两个日志的同步 有了前面两个刷盘时机为什么还要有两次提交因为我们需要保证redo log和bin log的一致性。 两阶段提交的过程是如何的 具体的取决于我们的参数参数一共有四个分别如下所示 mysql show variables like %sync_binlog%; ---------------------- | Variable_name | Value | ---------------------- | sync_binlog | 1 | ---------------------- 1 row in set (0.00 sec)mysql show variables like %innodb_flush_log_at_trx_commit%; --------------------------------------- | Variable_name | Value | --------------------------------------- | innodb_flush_log_at_trx_commit | 1 | --------------------------------------- 1 row in set (0.00 sec)mysql show variables like %binlog_group%; -------------------------------------------------- | Variable_name | Value | -------------------------------------------------- | binlog_group_commit_sync_delay | 1000000 | | binlog_group_commit_sync_no_delay_count | 10 | -------------------------------------------------- 2 rows in set (0.00 sec)其中我们看到了两个新参数他们是组提交参数 1、 binlog_group_commit_sync_delay N表示在等待 N 微妙后直接调用 fsync将处于文件系统中 page cache 中的 binlog 刷盘也就是将binlog 文件持久化到磁盘。表中值为1000000 (即1e6)就是1s。 2、 binlog_group_commit_sync_no_delay_count N表示如果队列中的事务数达到 N个就忽视binlog_group_commit_sync_delay 的设置直接调用 fsync将处于文件系统中 page cache中的 binlog 刷盘。 不同的参数效果都是不一样的。 1、我们先来看最经典的双1配置 此刻事务提交时需要花费1.00 sec因为binlog_group_commit_sync_delay设置的是1sbinlog_group_commit_sync_no_delay_count和binlog_group_commit_sync_delay满足其中一条即可 2、在双1的基础上如果我们把innodb_flush_log_at_trx_commit改了呢 每次redo log都没有刷盘我们默认就成功了。 3、在双1的基础上如果我们把sync_binlog改了呢 此时事务提交只需要0.00sec可以判定提交的瞬间未刷盘但是提交成功了。因为sync_binlogN在后续的1~N-1的事务commit都是很快第N个事务commit所消耗的时间是1s左右。也就是在第N次时候进行了刷盘。 这时候有人疑惑了那么我的组提交参数有啥用 我们来看结论 开启两个并行的窗口这两个窗口同时commit提交并设置binlog_group_commit_sync_no_delay_count 2我们发现刷盘了。 也就是说组提交在事务并行的时候才有效果。为什么要在并行事务的时候才有效果 原来早期的 MySQL 版本中通过使用 prepare_commit_mutex 锁来保证事务提交的顺序在一个事务获取到锁时才能进入 prepare 阶段一直到 commit 阶段结束才能释放锁下个事务才可以继续进行 prepare 操作。 通过加锁虽然完美地解决了顺序一致性的问题但在并发量较大的时候就会导致对锁的争用性能不佳。 所以sync_binlog和组提交之间是相互配合而不是冲突矛盾的关系在事务并发时组提交生效而在没有并发时候syc_binlog就发挥了巨大作用。 好了关于日志刷盘的内容就到这了。
http://www.zqtcl.cn/news/924568/

相关文章:

  • 域名注册以后会给你一个账户名密码上传做好的网站文化网站建设需要的功能
  • 企业站用wordpress做好吗那些做环保网站的好
  • 天津有哪些有名的网站建设公司商城网站模板免费
  • 安徽省途顺建设工程有限公司网站制作网站公
  • 北京建设职工大学网站成都网站建设比较好的公司
  • 网站建设品牌策wordpress怎么做企业网站
  • 网站正在建设中 html 模板医院网站建设预算表
  • 哪个网站能接施工图来做购物网站黑白
  • 网站开发课设心得企业宣传页模板
  • 中学生怎么做网站ghost 卸载wordpress
  • 网站诊断报告案例用户浏览网站的方式
  • 网站开发流程抚州做网站需要看的书
  • wordpress 禁止目录浏览网站seo推广优化
  • 源代码如何做网站高校门户网站建设需要多少钱
  • 深圳微商城网站制作报价基础网页设计教程
  • wordpress+vps建站大连网站建设运营
  • 第一次开票网站建设怎么开制作网站品牌公司哪家好
  • 医疗机械网站怎么做什么是o2o电商模式
  • 北京微网站建设设计服务营销导向的企业网站建设步骤
  • 网站 301网站设计评价标准
  • 网站页面设计规范大连装修公司哪家好
  • 祁东网站建设微信公众号做的网站
  • 火山开发软件可以开发网站吗盐城代运营
  • 网页制作与网站建设从入门到精通民宿客栈网站制作
  • 如何写手机适配网站自己做的网站能上传到凡科吗
  • 建设公司网站开发方案seo优化工具的种类
  • 没备案的网站怎么做淘客企业做网站服务费
  • 网址站点异常怎么解决机关单位建设网站 说明
  • 阿虎手机站青岛关键词排名系统
  • 西安网站建设聚星互联网站成功案例