Mysql体系结构和存储引擎

126 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情

体系结构

image.png

image.png

存储引擎

  1. 查看当前支持的引擎
show engines;
  1. 数据库引擎线程
  • Master Thread 主要是把数据从缓存池刷新到硬盘中,保证数据的一致性

  • 查询 IO Thread

    show engine innodb status;
    
  • Purge Thread 事务被提交后,使用的 undolog 不再被需要,因此需要 Purge Thread 来回收

连接 Mysql

  1. 请求远程服务器上的 mysql 实例
mysql -h 192.168.128.91 -u root -p
  1. 连接的时候,系统数据库 mysql 里面有一个 user 权限表。用于判断客户端能否连接到该实例
select user,host from user;
  1. 查看 mysql 版本
select version();

InnoDB 关键特性

  1. 插件缓存
  2. 两次写
  3. 自适应哈希缓存
  4. 异步 IO
  5. 刷新临近页

Mysql 文件

  1. mysql 参数文件
  • 通过命令 mysql --help | grep my.cnf 查找
  • 可以查看所有的参数配置
    • show variables;
  • 改变参数
    • global:改变全局参数,session 改变会话参数
    • set global read_buffer_size=1048675;
    • 用 set 改变的参数只是本实例有效,并没有去改掉配置文件。
  1. 日志文件
  • 错误日志
    • 通过 show variables like 'log_error';定位错误文件的位置
  1. 慢查询日志
  • 慢查询就是查询时间超过一个阀值的查询。这个阀值可以通过这个查询

    show variables like 'long_query_time';
    
  • 修改慢查询时间

    set global long_query_time=2
    
  • 查看慢查询是否开启,默认是不启动慢查询的

    show variables like "%slow%";  
    
  • 开启慢查询

    set global slow_query_log='ON';
    
  • 查询慢日志

    cat mysql-slow.log
    

    文件位置可由(show variables like "%slow%"; )查出

  • 慢日志分析工具

    • mysqldumpslow
  1. 查询日志
  • 记录了所有对数据库请求的信息
  1. 二进制日志
  • 记录了对数据库执行更改的所有操作

  • 可以用于

    • 恢复数据库
    • 复制数据库
    • 审计数据库:通过二进制中的日志进行审计,判断是否有注入攻击
  • 查看日志文件位置

    show variables like 'datadir';
    
  1. 套接字文件
  • 在 unix 系统下可以采用套接字连接的方式,这个方式需要一个套接字文件

    #可以查询这个文件位置
    show variables like 'socket'
    
  1. PID 文件
  • 当 mysql 实例启动时,会将进程 ID 写入一个文件中-该文件为 pid 文件
    show variables like 'pid_file';
    
  1. 表结构定义文件
  • mysql 的存储是根据表的,所以每个表都有对应的文件。不论哪种存储引擎,都有一个 frm 后缀的文件,记录了该表的表结构定义
  1. InnoDB 存储文件
  • InnoDB 设计采用将存储的数据按表空间进行存放的设计。默认有一个初始 10M,名为 ibdata1 的文件,这个就是表空间文件
  1. 重做日志文件
  • 目录下有两个 ib_logfile0 和 ib_logfile1 的文件。当主机断点或者介质失败时就能派上用场。InnoDB 引擎会使用重做日志恢复到断电之前。

  1. 查看数据库文件大小

show variables like 'datadir'; //得到文件目录

system ls -lh /usr/local/mysql/data/; 查看大小