内容介绍:
C/S 结构
实例构成
SQL语句分类
三层结构
逻辑存储结构
物理存储结构
innodb(段页区)
C/S 结构
连接方式:
- TCP/IP
- mysql -u [用户名] -p [密码] -h [主机] -P [端口]
- Socket
- mysql -u [用户名]-p [密码] -S /tmp/mysql.sock
实例构成
mysqld + master thread + 干活的Thread + 预分配的内存
守护进程 主进程 进程 内存
SQL语句
结构化的查询语言
- DQL 数据查询语言
- DDL 数据定义语言
- DML 数据操作语言
- DCL 数据控制语言
例如:mysql> select user,host from mysql.user;
三层结构
- 连接层
- 连接协议
- Socket
- TCP/IP
- 验证用户名(root@localhost)密码合法性,进行授权表匹配
- 派生一个专用连接线程(接收SQL,返回结果)
- SQL层
- 验证SQL语法和SQL_MODE
- 验证语义
- 验证权限
- 解析器进行语句解析,生成执行计划(解析树)
- 优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划
- CUP
- IO
- MEM
- 执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法
- 提供query cache(默认关闭),一般不开,会用redis
- 记录操作日志(binlog),默认关闭
- 存储引擎层
-
与物理硬件交互
-
根据SQL层提供的取数据的方法;获取数据返回给SQL;结构化成表,连接层线程返回给用户
逻辑存储结构
- 库
- 表
- 列
- 数据行
- 表属性
物理存储结构
库:使用 FS 上的目录来表示
表:
- MyISAM(ext2)
- user.frm : 存储的表结构(列,列属性)
- user.MYD : 存储的数据记录
- user.MYI : 存储索引
- InnoDB(XFS)
- time_zone.frm : 存储的表结构(列,列属性)
- time_zone.ibd : 存储的数据记录和索引
- ibdata1 : 数据字典信息
innodb(段页区)
- 区:16K
- 页:64个区组成,大小为1M
- 段:多个连续的页组成(分区表除外)
评论