mysql 数据文件、数据结构

基础结构

mysql-jucu-1

Connection:这一块其实主要是其他语言的连接,并不属于MySQL本身;主要是其他语言对于MySQL的连接操作的工具比如PHP中的:pdo,mysqli或者 Navicat for MySQL
SQL层:功能主要包括权限判断,SQL解析功能和查询缓存处理等。

  1. 链接/线程处理:客户端通过 连接/线程层 来连接MySQL数据库,连接/线程层主要用来处理客户端的请求、身份验证和数据库安全性验证等。
  2. 查询缓存和查询分析器是SQL层的核心部分,其中主要涉及查询的解析、优化、缓存、以及所有内置的函数,存储过程,触发器,视图等功能。
  3. 优化器主要负责存储和获取所有存储在MySQL中的数据。

MySQL物理文件类型

日志文件主要包括:

  1. 错误日志(ErrorLog)、
  2. 二进制日志(Binary Log)、
  3. 事务日志(InnoDB redo Log & undo Log)、
  4. 慢查询日志(Slow Query Log)、、
  5. 查询日志(Query Log)

数据库文件:

  1. ‘.frm’文件
  2. ‘.MYD’文件 myisam 数据文件
  3. ‘.MYI’文件 myisam 索引文件
  4. ‘.ibd’文件(独享)和’.ibdata’文件(共享) innodb 数据和索引存放

其他配置文件

  1. 系统配置文件(my.ini或者my.cnf)
  2. pid,err文件
  3. socket文件

错误日志

show global variables like '%log_error%';

二进制日志

show global variables like '%log_bin%';`

作用

  1. 以二进制形式记录更改数据库的SQL语句(insert,update,delete,create,drop,alter等)。
  2. 用于MySQL主从复制。
  3. 增量数据备份及恢复

事务日志(InnoDB)

查看存储引擎: show engines ;

InnoDB引擎在线Redo日志记录了InnoDB所做的所有物理变更和事务信息。通过Redo日志和Undo信息,InnoDB大大地加强了事务的安全性。InnDB在线Redo 日志默认存放在data命令下,可通过设置innodb_log_griyo_home_dir选项来更改日志文件存放位置,通过innodb_log_files_in_group选项来说何止日志的数量
使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁 盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式 相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的。

慢查询日志

慢查询日志是值所有SQL执行的实际超过long_query_time变量的语句和达到min_examined_row_limit条举例的语句。用户可以针对这部分语句性能调 优。慢查询日志通过设置log-slow_queries[=file_name]选项开启后,将记录日志所在的路劲和名称。MySQL系统默认的慢查询日志的文件名是show.log,默认目 录是data目录。

命令:

1
2
3
4
5
6
-- 查看long_query_time设置时间
show global variables like '%long%';
-- 查看具体信息
-- slow_query_log: off关闭状态 on开启状态
-- slow_query_log_file 慢查询日志存放地点
show variables like "%slow%" ;

mysql性能测试

1
2
3
4
5
show status

show processlist

show variables