zoukankan      html  css  js  c++  java
  • Mysql的事务日志

    Mysql的事务特性(原子性,一致性,隔离性,持久性)

    事务的执行依靠日志,事务执行时,日志先执行

    事务提交的流程

    提交事务
    日志刷盘
    数据刷盘
    写cpk(数据校验)

    事务提交的时候。会有两个日志文件

    redo 重做日志 

       记录我们提交的事务,事务提交后,假如断电了,没有来的及写入磁盘,mysql 重启就会执行redo log

    undo 回滚日志

      异常,错误,手动回滚写入

      回滚日志会写入一条相反的语句到日志  update/相反的update ,insert 写入一条delete等

    注:事务如果没有提交commit ,就会等待,超出事务最大执行时间,就会异常。事务执行完毕以后,mysql不会再去执行undo(回滚日志)

    事务开启的时候,我们进行数据库操作,首先会创建一个日志文件,会记录该事务一个lns序列号,当执行事务的时候,会往innodb_log_bufferri日志缓存区插入事务日志(redo),当事务提交时会将日志缓存区里面的事务日志刷入磁盘,这个动作主要有innodb_flush_log_at_trx_commit来进行控制

    使用事务也会影响性能:控制提交时间

    日志写入时间可以通过innodb_flush_log_at_trx_commit 函数来进行设置 0   1    2 三个值

    参数mysql内默认为1 

    0 代表事务提交以后,隔一秒写入缓存日志内部,在隔一秒写入磁盘文件  。开销小,容易出现数据丢失,比如忽然断电,数据没有写入磁盘,服务器重启后无法进行回滚日志进行数据恢复

    1 代表实时写入,直接写入日志与磁盘,开销大,数据不会出现丢失的情况

    2 事务提交以后,直接写入缓存日志,再隔一秒写入磁盘文件,折中方案

     

  • 相关阅读:
    Django+Bootstrap+Mysql 搭建个人博客(一)
    Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
    微信小程序入门(六)
    微信小程序入门(五)
    微信小程序入门(四)
    微信小程序入门(三)
    微信小程序入门(二)
    遗传算法常见问题解惑
    记录使用python实现QPSO求解最大值问题时,遇到的问题
    关于JetBrain系列软件的学生授权认证和授权到期(一年)重新申请的问题
  • 原文地址:https://www.cnblogs.com/bkhdd/p/15262008.html
Copyright © 2011-2022 走看看