Innodb文件系统

Innodb文件系统

不管数据库再怎么牛掰,最后它一定也是落到了文件当中,但也不仅仅有数据库文件,在Innodb中有各种文件去支撑它的功能实现

参数文件

这个文件当然很重要了,这决定了我们启动数据库时的各种参数配置

日志文件

错误日志

错误日志对Mysql的启动、运行、关闭过程进行了记录,记录了SQL的错误信息和警告信息,当我们遇到问题的时候,可以去快速定位

查询日志

这个一般不开启

慢查询日志*

慢查询日志指的是执行了超出我们指定时间的SQL日志

  • 数据库默认不开启慢查询日志
  • 参数long_query_time来设置阈值,默认值为10,代表10秒,严格大于它的才算是慢查询
  • MySQL5.1以后用微秒为单位衡量慢查询
  • MySQL可以开启是否使用索引才加入慢查询
  • log_throttle_queries_not_using_indexes限制每分钟一条语句最多记录多少,默认是0没有限制,一般要设置,如果一条记录访问太多,会导致慢查询日志臃肿

二进制文件binlog

binlog做两件事

  • recover恢复
  • replication复制
  • audit审计,看有无攻击内容

为什么binlog默认关闭

首先对于小型项目来说,没有主从复制,recover也是有redo log来做,更不用考虑什么审计的问题,所以是用不上bin log的,再加上这多多少少也会对性能有所影响

为什么要使用binlog

对于大型项目的主从复制和point-in-time恢复,并且binlog的性能影响可能就1%,绝对可以被接受

binlog的各种参数

max_binlog_size

单个binlog文件的最大size,默认1GB,超出了就会新建一个新文件,同时维护了一个index尾缀文件去持有这些文件

binlog_cache_size

binlog也是需要有size的,毕竟也是有写入有IO,那就想着可以一起给他写入了,大小默认为32KB。
如果一个文件超过了binlog_cache_size,它会写入一个临时文件中,这里可以从两个值观察到:

  • binlog_cache_use
  • binlog_cache_disk_use。
    如果发现disk_use很多,那毫无疑问要调整binlog_cache_size了

sync_binlog

这个参数的意思是每写缓存多少次就写入磁盘,这个参数关系到binlog_cache了,如果设置为1,那cache就没有意义了。

binlog-do-db

需要写入哪些库的日志,默认为空,也就代表全部

binlog-ignore-db

需要忽略那些库的日志,默认为空

log-slave-update

从主服务器获取binlog然后写入自己的,如果不开启就是我只用你的binlog但是我不存到自己的。

binlog_format

三种不同的格式,STATEMENT,ROW,MIXED

  • STATEMENT就是正常的语句
  • ROW就是原本的样子
  • MIXED默认使用STATEMENT,有需要就使用ROW格式
    说的也是当使用了一些不确定的函数或者什么的导致STATEMENT每次读取出来的值可能不一样
posted @ 2022-10-13 09:13  azxx  阅读(33)  评论(0编辑  收藏  举报