10小时吃透MySQL底层原理 学习笔记Day 1

115 阅读3分钟

hi,我是蛋挞,一个初出茅庐的后端开发,希望可以和大家共同努力、共同进步!


开启掘金成长之旅!这是我参与「掘金日新计划 · 4 月更文挑战」的第 23 天,点击查看活动详情

  • 起始标记->架构篇:「架构篇 | 1」
  • 结尾标记->架构篇:「架构篇 | 1」

1.1 MySQL逻辑架构图

image.png

  1. 客户端连接器
  2. 系统管理和控制工具
  3. 连接池
  4. SQL接口
  5. 解析器
  6. 查询优化器
  7. 缓存
  8. 存储引擎
  9. 文件和日志

Redo log 、Undo log、Error Log、SlowQueryLog...

1.2MySQL的日志文件

MySQL从物理结构上可以分为日志文件数据及索引文件,MySQL通过日志记录了数据库操作信息和错误信息。 常见日志文件如下:

  1. 错误日志error.log
  2. 二进制日志mysql-bin
  3. 通用查询日志general_query.log
  4. 慢查询日志slow_query_log.log
  5. 重做日志Redolog
  6. 中继日志relaylog

如何知道这些日志是否开启,及存储在哪? mysql> show variables like 'log_%': image.png

1.2MySQL的日志文件详解

01-错误日志error log

  • 默认开启,记录运行过程中所有严重的错误信息,及每次启动和关闭的详细信息
  • 通过log_error和log_warnings配置
    • log_error:指定存储位置
    • log-warnings:配置警告信息级别,0值不记录告警日志,大于等于1值记录告警日志

log_error=/var/1og/mysql-error .log log_warnings=2 02-二进制日志bin log

  • 默认关闭,须通过配置开启,记录数据库所有的DDL语句和DML语句,不包括DQL语句
  • 主要用于实现主从复制、数据备份、数据恢复
  • 通过log-bin配置

server_id=42 log-bin=mysq1-bin

数据定义语言: 简称DDL(Data Definition Language)。

  • 作用:用来定义数据库对象: 数据库,表,列等。
  • 关键字: create,alter,drop等

数据操作语言: 简称DML(Data Manipulation Language).。

  • 作用:用来对数据库中表的记录进行更新
  • 关键字: insert,delete,山date等

数据查询语言: 简称DQL(Data Query Language)

  • 作用:用来查询数据库中表的记录。
  • 关键字: select,from,where等

数据控制语言: 简称DCL(Data Control Language)

  • 作用:用来定义数据库的访问权限和安全级别,及创建用户

03-通用查询日志

  • 默认关闭,记录用户的所有操作,包含增删查改等详细信息。如果不是调试,不建议开启
  • 通过general log和general log file配置
    • general_log:日志开关
    • general_log_file: 日志存储路径,如果没指定默认host_name.log

genera1_1og={ONIOFF} genera1_1og_file=/var /1ib/mysq1/host_name .1og 04-慢查询日志

  • 默认关闭,记录SQL执行时间超闽指定时间的所有查询
  • 通过slow_query_log、long_query_time和slow_query_log_file配置
    • slow_query_log:日志开关
    • long_query_time: 慢查询闻值
    • slow_query_log_file: 日志存储路径,如果没指定默认host_name-slow.log

1.3MySQL数据文件

MySQL的数据及索引文件存储在哪里? show variables like '%datadir%' 情况01-ibdata文件: 使用系统表空间存储表数据和索引信息,那么数据存储在一个或多个ibdata文件中 情况02-InnoDB存储引擎的数据文件 表名.frm文件:主要存放与表相关的元数据信息,包括: 表结构的定义信息 表名.ibd变件:一张表一个ibd文件,存储表数据和索引信息 情况03-MyISAM存储引擎的数据文件 表名.frm文件:主要存放与表相关的元数据信息,包括: 表结构的定义信息 表名.myd文件:主要存放数据 表名.myi文件:主要存放索引

1.4一条SQL语句的完整执行流程

分析SQL语句如下: select c_id,first_name,]ast_name from customer where c_id=14; image.png


此文章为5月Day2学习笔记,内容来源于极客时间《10小时吃透MySQL底层原理》