数据库日志文件和内存刷新机制
时间:2022-03-15 10:46
1.错误日志 error log
- 错误日志 error.log :记录了MySQL启动、运行、关闭过程中出现的问题。
2.慢查询日志
- 记录超过阀值时间的所有SQL语句,默认10s,等于10s不记。
- 1.5.1记录到slow_log表中。
- log_output参数可以指定慢查询日志输出格式,默认FILE , 可以设置成TABLE,这样就可以查看表了。
3.查询日志
- 记录所有日志无论是否正确执行。
4.二进制日志 binary log
- 记录关于事务的具体操作内容,就是对事务操作的描述,并未记录数据,属于逻辑日志。
- 记录对MYSQL数据库执行更改的所有操作,但是不包括 SELECT和SHOW,这类没有进行更改的操作。
- 作用:恢复数据,复制数据,查看数据库是否被攻击, 主从复制。
5.重做日志redo log
- redo log 是是属于InnoDB引擎的文件(InnoDB引擎还有表空间文件),其他日志文件是属于MySQL的。
- 记录每个页的更改情况,为了压缩日志只记录了与原页不同的数据(这里埋下了2次写的隐患)属于物理日志。
- 重做日志至少2个,记录数据修改之后的值,无论事务是否提交都会记录。
- 写满一个重做日志接着写下一个,全写满之后再重写写第一个。
- 作用:当数据库宕机之后可以使用重做日志来恢复到宕机之前时刻。
6.回滚日志undo log
- 主要用于记录事务行为,属于逻辑日志。
- 用于回滚事务。
7.InnoDB内存
- InnoDB引擎存储是基于磁盘的,数据以页的形式存放,数据页从磁盘读到内存进行处理,之后写回磁盘。
- 缓冲池就是为了解决CPU和磁盘之间的速度差异,如图所示
- 管理缓冲池内存区域
- doublewriter buffer 分2个每次1M写入共享表空间,共享表是连续的所以这个开销并不大。
- 之后再写入磁盘。
-
自适应哈希索引
- InnoDB存储引擎自动根据访问频率和模式来自动的为某些热点数据建立哈希索引
- 访问频率不用多说,访问模式就是 根据某一相同的条件 访问,如:where name = "java" 访问100次可能为naem = java 建立哈希索引,如果 where name = "java" 访问50次where name = "java" and id = 2 访问50 可能并不会为name = java 建立哈希索引。