1. MySQL 体系结构

各层具体为:连接池、管理工具和服务、SQL接口、解析器、缓存器、插件式引擎、文件与日志系统。

TDSQL和mysql的配置区别 mysqld和mysql_MySQL

2. MySQL 逻辑结构

MySQL 逻辑结构分为连接层、服务层、存储引擎层。

连接层:进行连接、鉴权。

TDSQL和mysql的配置区别 mysqld和mysql_MySQL_02


TDSQL和mysql的配置区别 mysqld和mysql_mysql_03


服务层:

TDSQL和mysql的配置区别 mysqld和mysql_MySQL_04


存储引擎层:是插件式的,并且是基于表的,而不是基于数据库的,也就是不同的表可以使用不同的存储引擎,而不是整个数据库使用同一个存储引擎。但是不建议一个数据库中混用存储引擎。

2.1 InnoDB 与 MyISAM 区别

TDSQL和mysql的配置区别 mysqld和mysql_TDSQL和mysql的配置区别_05

3. 安装目录

3.1 bin 目录

TDSQL和mysql的配置区别 mysqld和mysql_mysql_06


MySQL 服务器程序:

mysqld、mysqld_safe、mysqld_multi

MySQL 客户端程序:
mysqladmin、mysqldump

MySQL 启动时寻找配置文件顺序:后面的会覆盖前面的。

TDSQL和mysql的配置区别 mysqld和mysql_mysql_07

3.2 数据目录

show variables like ‘%datadir%’;

创建一个数据库 a,就会在 datadir 目录下创建 a 的文件目录。

TDSQL和mysql的配置区别 mysqld和mysql_MySQL_08


创建一个表时,会创建文件:

InnoDB 引擎,创建一个表时,会创建:

  1. .frm 文件,专门描述表结构文件。
  2. 数据存储在表空间中,在之前的版本中数据默认放在系统表空间中 ibdata1(会自动扩展),后来存储在独立表空间中,每个表有一个独立表空间 .ibd(InnoDB 表数据、索引都存放在这个文件中)。

MyISAM 引擎,创建一个表时,会创建:
3. .frm 文件,专门描述表结构文件。
4. .MYD 存放数据,.MYI 存放索引。

日志文件:
5. 错误日志:error_log、show variables like ‘%error_log%’
6. 慢查询日志:记录慢查询,日志位置在于数据库文件同一层级上,主机名-slow.log
7. 查询日志:记录所有对 MySQL 操作的请求,日志位置在于数据库文件同一层级上,主机名.log
8. 二进制文件:记录对 MySQL 数据库执行更改的所有操作,不包括 SELECT、SHOW 操作,用在从库复制时。redo 日志、undo 日志。

慢查询日志:

TDSQL和mysql的配置区别 mysqld和mysql_MySQL_09

4. 系统库

  1. performace_schema:记录 MySQL 运行过程中的一些信息、性能。
  2. information_schema:记录 MySQL 其他库的信息:包括包含哪些表、哪些列。
  3. sys:综合 performace_schema、information_schema 库中的数据。
  4. mysql:记录查询过程中的一些统计信息,比如查询优化时获取信息需要使用的两张表:innodb_index_stats、innodb_table_stats。

5. 其他

5.1 数据库与数据库实例

数据库:数据库是由一个个文件组成的。
数据库实例:对数据库中的文件操作不能简单的通过文件操作来完成,需要通过数据库实例进行 insert、update 等。

5.2 参数(变量)

MySQL 参数从两个维度来分:一个维度是静态、动态,另一个维度是全局、会话/本地。

  1. 动态变量是可以随时修改的,修改方式:set xxx=‘yyy’(修改会话级变量)、set global xxx=‘yyy’(修改全局变量)。
  2. 静态变量修改方式,停止数据库实例,修改配置文件。

查看变量:show variables like ‘%----%’。