MYSQL学习笔记2 MYSQL 执行与日志系统

MySQL 可以分为 Server 层和存储引擎层两部分。

不同的存储引擎共用一个 Server 层


image.png

查看链接

show processlist

长链接占用内存较大所以 mysql_reset_connection 初始化长链接

缓存问题

不建议使用mysql缓存,性能问题较大
配置中 query_cache_type 设置成 DEMAND 取消缓存

分析器

  • 识别关键字
  • 语法分析

优化器

识别使用join 表查询方式或者使用哪个索引

执行器

判断表是否有查询权限,一条一条查询执行

redoLog (重做日志)

  • innodb 特有的日志 (引擎层的日志)
  • 固定大小 一个文件1G 4个文件就是4G
  • 依靠redoLog 异常重启保持数据不丢失叫做 crash-safe
  • 数据页修改了什么 物理日志
  • 循环写,覆盖写

binlog (归档日志)

  • 所有引擎层都可以有binlog
  • 语句的原始逻辑 逻辑日志
  • 追加写 不覆盖

执行update 语句

image.png
  • redoLog 两阶段提交保证两份数据的一致性
  • 1.redoLog Prepare 2.binLog 3.redoLog commit 如果2->3 阶段崩溃,则数据库恢复因为有binlog,redoLog会自动提交。

你可能感兴趣的:(MYSQL学习笔记2 MYSQL 执行与日志系统)