mysql事务,先写入到日志中,当提交时才会写入到磁盘。

  1. mysql开启事务之后,如果事务最后进行了 ,回滚,那么原有的自增的主键id,会删除,假设新增的主键id为1,但是在事务中进行了回滚,那么在他下次新建的时候,id将以2开始。

  2. 事务日志 undo log(撤销日志) redo log(记录事务操作日志)

  3. 进入mysql命令行,输入方式为 mysql -uroot -proot,

    # 查看日志文件 
    show engine innodb status
    
    # 输入命令显示的一些 日志信息
    # Log sequence number 368355979 # 表示日志文件 LSN日志文件序列号
    # Log flushed up to   368355979 # 刷新 日志文件 LSN
    # Last checkpoint at  368355970 # 刷新到 磁盘
    
  4. innodb_flush_log_at_trx_commit:共有3个参数,0,1,2

    1. 如果当这个参数等于0的时候,每个一秒将内存中的数据存储到磁盘中,这个的不安全,不能保证数据的完整性,比如在0 到 1秒,也就是写入磁盘文件之前,断电了,则当前数据不会保留,、
    2. 默认是1,这个参数代表的意思是指:代表每当事务执行时,每当用户输入的时候就会报错,这个可以确保数据的完整性,但是会加大磁盘IO
    3. 参数是2:代表事务执行后,写入到red log 重做日志中,在每个一秒写入到磁盘。
  5. 查看日志信息:show variables like ‘innodb_log%’;

  6. 事务开启的时候:mysql首先记录日志。

  7. 事务执行完了之后:mysql是不会在执行事务的回滚。

  8. 日志生命周期:创建日志 -> 日志刷盘 -> 数据刷盘 -> 写KCP(数据校验)

  9. mysql事务开始操作数据的时候:日志 > 数据

  10. undo 回滚日志, redo 重做日志

  11. 事务执行流程,当开启事务之后,首先将当前的sql语句写入到日志中,然后当我们commit提交时,才会在磁盘中写入数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值