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

网站建设众包平台浙江网城建设有限公司

网站建设众包平台,浙江网城建设有限公司,网站建设考虑的因素,网页设计与制作心得体会1000在上一章#xff0c;我讲解了 MySQL 锁的相关内容。主要谈到了全局锁、表锁、行锁以及死锁等。通过这些学习#xff0c;相信我们可以理解锁的原理#xff0c;并在工作中降低锁冲突的概率。这也是优化数据库必须掌握的知识点。从本节开始#xff0c;将进入一个新的 MySQL 知…在上一章我讲解了 MySQL 锁的相关内容。主要谈到了全局锁、表锁、行锁以及死锁等。通过这些学习相信我们可以理解锁的原理并在工作中降低锁冲突的概率。这也是优化数据库必须掌握的知识点。从本节开始将进入一个新的 MySQL 知识大类MySQL 事务。什么是事务根据《高性能 MySQL》第 3 版 1.3 事务一节中定义事务就是一组原子性的 SQL 查询或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行那么所有的语句都不会执行。也就是说事务内的语句要么全部执行成功要么全部执行失败。看上面的文字可以稍微抽象了一点可以结合生活中的一个例子比如你给朋友转账 100 元其大致过程是从你的账户扣除 100 元然后再到你朋友的账户中增加 100 元试想如果在这中间因为网络问题或者程序问题导致在你的账户中扣除了但是没有在你朋友的账户中增加那岂不是乱套了。所以类似这种情况就可以把这两个步骤放到一个事务里面。要么全部成功也就是从你的账户扣除之后然后在你朋友账户中新增要么全部失败比如在中间出现问题会回滚这中间所有的变更。大致操作步骤如下表一个良好的事务处理系统必须具备 ACID 特性atomicity(原子性) 要么全执行要么全都不执行consistency(一致性)在事务开始和完成时数据都必须保持一致状态isolation(隔离性) 事务处理过程中的中间状态对外部是不可见的durability(持久性) 事务完成之后它对于数据的修改是永久性的。InnoDB 采用 redo log 机制来保证事务更新的一致性和持久性。什么是 redo log下面来一起看下2 Redo logRedo log 称为重做日志用于记录事务操作变化记录的是数据被修改之后的值。Redo log 由两部分组成内存中的重做日志缓冲(redo log buffer)重做日志文件(redo log file)每次数据更新会先更新 redo log buffer然后根据 innodb_flush_log_at_trx_commit 来控制 redo log buffer 更新到 redo log file 的时机。innodb_flush_log_at_trx_commit 有三个值可选0事务提交时在事务提交时每秒触发一次 redo log buffer 写磁盘操作并调用操作系统 fsync 刷新 IO 缓存。1事务提交时InnoDB 立即将缓存中的 redo 日志写到日志文件中并调用操作系统 fsync 刷新 IO 缓存2事务提交时InnoDB 立即将缓存中的 redo 日志写到日志文件中但不是马上调用 fsync 刷新 IO 缓存而是每秒只做一次磁盘 IO 缓存刷新操作。innodb_flush_log_at_trx_commit 参数的默认值是 1也就是每个事务提交的时候都会从 log buffer 写更新记录到日志文件而且会刷新磁盘缓存这完全满足事务持久化的要求是最安全的但是这样会有比较大的性能损失。将参数设置为 0 时如果数据库崩溃最后 1秒钟的 redo log 可能会由于未及时写入磁盘文件而丢失这种方式尽管效率最高但是最不安全。将参数设置为 2 时如果数据库崩溃由于已经执行了重做日志写入磁盘的操作只是没有做磁盘 IO 刷新操作因此只要不发生操作系统崩溃数据就不会丢失这种方式是对性能和安全的一种折中处理。3 Binlog二进制日志(binlog)记录了所有的 DDL(数据定义语句)和 DML(数据操纵语句)但是不包括 select 和 show 这类操作。Binlog 有以下几个作用恢复数据恢复时可以使用二进制日志。复制通过传输二进制日志到从库然后进行恢复以实现主从同步。审计可以通过二进制日志进行审计数据的变更操作。可以通过参数 sync_binlog 来控制累积多少个事务后才将二进制日志 fsync 到磁盘。sync_binlog0表示每次提交事务都只write不fsync。sync_binlog1表示每次提交事务都会执行fsync。sync_binlogN(N1)表示每次提交事务都write累积N个事务后才fsync。比如要加快写入数据的速度或者机器磁盘 IO 瓶颈时可以将 sync_binlog 设置成大于 1 的值但是如果设置为 N(N1)时如果数据库崩溃可能会丢失最近 N 个事务的 binlog。4 怎样确保数据库突然断电不丢数据通过上面的讲解只要 innodb_flush_log_at_trx_commit 和 sync_binlog 都为 1(通常称为双一)就能确保 MySQL 机器断电重启后数据不丢失。因此建议在比较重要的库比如涉及到钱的库设置为双一而你的测试环境或者正式业务不那么重要的库(比如日志库)可以将 innodb_flush_log_at_trx_commit 设置为0sync_binlog 设置成大于100 的数值提高更新效率。5 总结本节讲解了什么是事务所谓事务是指一组原子性的 SQL 查询事务里的 SQL 要么全部执行成功要么全部执行失败。一个良好的事务处理系统必须具备 ACID 特性 atomicity(原子性)、consistency(一致性)、 isolation(隔离性)、 durability(持久性)。另外讲解了 Redo log 和 BinlogRedo log称为重做日志用于记录事务操作变化记录的是数据被修改之后的值。Binlog记录了所有变更操作其作用有恢复、复制、审计等。如果想要数据库达到最安全的状态可以将 innodb_flush_log_at_trx_commit 和 sync_binlog 都设置为 1。6 问题你工作中有遇到过丢数据的场景吗是什么原因导致的呢下一章我们统一作答。希望大家可以踊跃评论。谢谢大家的支持。本文百家号首发 王者小哆啦原创 欢迎大家关注收藏。
http://www.zqtcl.cn/news/569478/

相关文章:

  • wordpress classseo推广服务
  • 石景山网站建设公司网站后台密码如何破解
  • 哪个大学的网站做的最好看南宁网站设计制作公司
  • 北京 集团公司网站建设免费网站建设模版云盘
  • 阿里云建设网站要什么广州网站建设方案案例
  • 德阳吧网站建设线上编程培训机构哪家好
  • 天津电商网站开发备案查询站长之家
  • 网至普的营销型网站布局青岛做网站
  • 网站开发的安全问题wordpress文章列表显示缩略图
  • 网站运营招聘代理商加盟
  • 清远 网站建设自己做的网站怎么发布
  • 可以做免费推广的网站短视频app有哪些
  • 班级网站建设的系统概述wordpress品牌分类
  • 学做网站论坛第六节个人网站注册公司
  • 网站宣传怎样做不违法做网络平台的网站有哪些
  • 网站建设go邢台集团网站建设报价
  • 哪个网站做appwordpress改成织梦
  • 重庆南岸营销型网站建设公司推荐o2o平台网站建设
  • 网站建设横向发展纵向发展贵阳网站建设外包
  • 网站建设的解决方案南京网站搜索排名
  • 网站怎么做背景衡阳网页定制
  • h5做网站用什么软件中英版网站系统
  • 汕头中英文网站推广wordpress取回密码收不到邮件
  • 外贸在线网站建站wordpress开放注册
  • 桂林餐饮兼职网站建设如何在百度上建网站
  • 怎样做免费网站的推广便宜点的网站空间
  • 中国建设部网站失信名单自己做公司网站难吗
  • 济南做网站需要多少钱园区网站到底怎么建设
  • 武清做网站的公司wordpress商城
  • 网站建设的实训技术总结sql 新建网站