持续学习&持续更新中…
学习态度:守破离
【宋红康 MySQL数据库 】【高级篇】【17】MySQL事务日志
概述
redo日志
为什么需要redo日志
redo日志的好处、特点
redo的组成
redo的整体流程
redo log的刷盘策略
这里讨论的是
redo log buffer ——> redo log file
的过程
不同刷盘策略演示
USE atguigudb3;
CREATE TABLE test_load(
a INT,
b CHAR(80)
)ENGINE=INNODB;
#创建存储过程,用于向test_load中添加数据
DELIMITER//
CREATE PROCEDURE p_load(COUNT INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80)DEFAULT REPEAT('a',80);
WHILE s<=COUNT DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s=s+1;
END WHILE;
END //
DELIMITER;
#测试1:
#设置并查看:innodb_flush_log_at_trx_commit
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
#set GLOBAL innodb_flush_log_at_trx_commit = 1;
#调用存储过程
CALL p_load(30000); #1min 28sec
#测试2:
TRUNCATE TABLE test_load;
SELECT COUNT(*) FROM test_load;
SET GLOBAL innodb_flush_log_at_trx_commit = 0;
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
#调用存储过程
CALL p_load(30000); #37.945 sec
#测试3:
TRUNCATE TABLE test_load;
SELECT COUNT(*) FROM test_load;
SET GLOBAL innodb_flush_log_at_trx_commit = 2;
SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
#调用存储过程
CALL p_load(30000); #45.173 sec
写入redo log buffer过程
补充概念:Mini-Transaction
redo日志写入log buffer
redo log block的结构图
redo log file
相关参数设置
日志文件组
checkpoint
redo log 小结
undo日志
这里的更新是指:增、删、改
如何理解undo日志
undo日志的作用
undo的存储结构
undo的类型
undo log 的生命周期
简要生成过程
详细生成过程
undo log是如何回滚的
undo log的删除
undo log 小结
参考
尚硅谷宋红康: MySQL数据库(入门到高级,菜鸟到大牛).
本文完,感谢您的关注支持!