-
mysql开启事务之后,如果事务最后进行了 ,回滚,那么原有的自增的主键id,会删除,假设新增的主键id为1,但是在事务中进行了回滚,那么在他下次新建的时候,id将以2开始。
-
事务日志 undo log(撤销日志) redo log(记录事务操作日志)
-
进入mysql命令行,输入方式为 mysql -uroot -proot,
# 查看日志文件 show engine innodb status # 输入命令显示的一些 日志信息 # Log sequence number 368355979 # 表示日志文件 LSN日志文件序列号 # Log flushed up to 368355979 # 刷新 日志文件 LSN # Last checkpoint at 368355970 # 刷新到 磁盘
-
innodb_flush_log_at_trx_commit:共有3个参数,0,1,2
- 如果当这个参数等于0的时候,每个一秒将内存中的数据存储到磁盘中,这个的不安全,不能保证数据的完整性,比如在0 到 1秒,也就是写入磁盘文件之前,断电了,则当前数据不会保留,、
- 默认是1,这个参数代表的意思是指:代表每当事务执行时,每当用户输入的时候就会报错,这个可以确保数据的完整性,但是会加大磁盘IO
- 参数是2:代表事务执行后,写入到red log 重做日志中,在每个一秒写入到磁盘。
-
查看日志信息:show variables like ‘innodb_log%’;
-
事务开启的时候:mysql首先记录日志。
-
事务执行完了之后:mysql是不会在执行事务的回滚。
-
日志生命周期:创建日志 -> 日志刷盘 -> 数据刷盘 -> 写KCP(数据校验)
-
mysql事务开始操作数据的时候:日志 > 数据
-
undo 回滚日志, redo 重做日志
-
事务执行流程,当开启事务之后,首先将当前的sql语句写入到日志中,然后当我们commit提交时,才会在磁盘中写入数据。
mysql事务,先写入到日志中,当提交时才会写入到磁盘。
最新推荐文章于 2023-07-27 14:16:26 发布