MySQL的结构体系
客户端服务器模型
C/S结构的服务
客户端
mysql
mysqladmin
mysqldump
phpmyadmin
mysqld一个二进制程序,后台的守护进程
单进程
多线程
MySQL的连接方式
TCP/IP连接
mysql -uroot -p123 -h172.16.1.51
Socket连接
mysql -uroot -p123 -S /tmp/mysql.sock
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的底层原理
#### 连接层
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