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 事务提交以后,直接写入缓存日志,再隔一秒写入磁盘文件,折中方案

     

  • 相关阅读:
    poj 3254 Corn Fields 状压dp
    poj 1330 Nearest Common Ancestors LCA/DFS
    poj1182 食物链 带权并查集 偏移量
    ural 1019. Line Painting 线段树 离散化
    zoj 2301 || hdu 1199 Color the Ball 线段树 离散化
    poj 1195 Mobile phones 二维树状数组
    poj 2155 Matrix 二维树状数组
    poj3067 Japan 树状数组 逆序数
    OpenWRT Init (User space boot) reference for Chaos Calmer: procd
    怎样写一个基于procd的init脚本
  • 原文地址:https://www.cnblogs.com/bkhdd/p/15262008.html
Copyright © 2011-2022 走看看