MySQL的结构体系


客户端服务器模型

C/S结构的服务

客户端
mysql
mysqladmin
mysqldump
phpmyadmin

image-20240808145157931

mysqld一个二进制程序,后台的守护进程
单进程
多线程

MySQL的连接方式

TCP/IP连接
mysql -uroot -p123 -h172.16.1.51

Socket连接
mysql -uroot -p123 -S /tmp/mysql.sock

image-20240808145323876

image-20240808145332882

MySQL服务器构成

MySQL服务:守护进程
实例:一个进程 + 多个线程+ 一个预分配的内存结构
[root@db04 ~]# mysqladmin -uroot -p123 variables|grep innodb_buffer_pool_size

innodb_buffer_pool_size=134217728
MySQL的内存要占物理机内存的75%~80%
[root@db01 ~]# vim my.cnf
[mysqld]
basedir = /app/mysql
datadir = /app/mysql/data
innodb_buffer_pool_size = 

MySQL的底层原理

image-20240808145506916

#### 连接层
1)提供两种连接方式
	TCP连接
	Socket连接

2)验证用户的合法性(用户名 密码 IP 权限)

3)提供一个与SQL层交互的线程
#### SQL层
1)接收连接层传递过来的SQL语句
2)验证语法
3)验证语义(DDL DML DCL DQL DTL)
4)解析器:解析SQL语句
5)优化器:出多种优化方案,选择最优的一种方式去执行
6)执行器:执行优化器选择的最优的一种方式的语句
	提供一个和存储引擎层交互的线程
	接收存储引擎层返回的结构化成表的数据
7)缓存
8)记录日志(binlog)
#### 存储引擎层
作用:
1)接收SQL层传递过来的SQL语句
2)与磁盘交互取出指定的数据
3)将数据结构化成表格返回给SQL层

MySQL的结构

逻辑结构(数据库管理员可操作的对象)
库
表
	元数据
		字段
			字段名
			数据类型
			约束
		描述信息...
	真实数据
	
物理结构:最底层的数据文件

MySQL的单位

段(一张表):一个段是由多个区组成的
区:一个区是由64个页组成的(1M)
页:一个页16k