【MySQL体系与结构】

1.1 MySQL的C/S结构介绍
tcp/ip方式(远程连接)mysql -uroot -poldbooy123 -h10.0.0.200 -p3306

socket方式(仅本地连接)mysql -uroot -poldboy123 -s/tmp/mysql.sock

1.2mysql实例构成
公司: 老板+经理+员工+办公区
实例: mysqld +master thread +干活的thread +分配的内存
1.3 mysql中mysqld服务进程结构

 

连接层:show processlist;(查看有多少连接线程)
(1)提供连接层协议(tcp/ip与socket)
(2)验证用户名(root@localhost)密码合法性,进行匹配专门的授权表(忘记密码就在这一步做了手脚,跳过授权表,不进行匹配)
(3)派生一个专用连接线程(接受SQL,返回结果)
SQL层:(优化方面至关重要的)
(1)验证SQL语法和SQL_mode
(2)验证语义
(3)验证权限
(4)解析器进行语句解析,生成执行计划(解析树)
(5)优化器(各种算法《基于执行代价),根据算法,找到代价最低的执行计划(代价:CPU,MEM,IO)
(6)执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法。
(7)提供query cache(查询缓层)(默认不开),一般会用Redis
(8)记录操作日志(binlog),默认不开
存储引擎层(真正和磁盘打交道的一个层次,根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成表,再有连接层线程返回给用户)

1.3.1 sql语句引入
结构化查询语言
DQl (查询)
DDl (删除)
DMl
DCL(授权,锁表)

1.3.2逻辑结构
库----->表-------->数据行-------->字段---------->属性(元数据)
表======>数据行+列+元数据

 

 

1.3.3物理结构
(1)宏观上:
库:库想Linux上目录一样,存在操作系统的目录上
表:[root@dba mysql]# ls -l user.*
存储引擎:
user表(myisam)--麦唉色母
user.frm -------列的定义信息
user.MYD---------数据行
user.MYI -----------索引信息
INNODB;
time_zone表;
time_zone.frm ------列的定义信息
time_zone.ibd ------数据行的索引
myisam与INNODB在存储的方式上的异同
相同点:都有一个rfm列的定义信息
不同点:myisam是用两个表存储数据行和索引信息,INNODB是用一个表来存储的
(2)微观上:
段 区 页
一个表就是一个段,mysql分配空间时至少分配一个区,
每个区默认是1M(64page),mysql最小的IO单元是PAGE

整理一下:
一个表就是一个段,一段会根据数据行的增多去分配区,每次分配一个区,一个区的大小是1M,也就是连续的64个页,每个页的最小的物理IO单元是16KB

 

posted @ 2020-04-18 17:18  鄧萌  阅读(156)  评论(0)    收藏  举报