[第三章]MySQL体系结构介绍

 黑渐神|he-jason.com   2018-11-22 19:13   3,715 人阅读  [第三章]MySQL体系结构介绍已关闭评论

客户端/服务器模型

MySQL C/S服务结构

MySQL自带客户端程序

mysql
mysqladmin
mysqldump

mysql后台守护进程

一个二进制程序,服务端程序
- 单进程
- 多线程

应用程序连接MySQL方式

  1. TCP/iP的连接方式
    • Connection: 127.0.0.1 via TCP/IP
  2. 套接字连接方式
    • Connection: Localhost via UNIX socket

MySQL构成

实例

  1. MySQL的后台进程+线程+预分配的内存结构
  2. MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用

MySQL程序构成


MySQL是一个守护进程,自身不能自主启动。只能启动MySQL线程,负责线程调试。属于管理者角色。

连接层

  1. 提供一个连接协议
    • TCP/IP
    • socket
  2. 验证用户的合法性
    • 用户(user@'主机域')
    • 密码
    • 端口
  3. 提供一个线程给SQL层(接收SQL层返回的数据,接收SQL交给SQL层)

SQL层

  1. 接收连接层的语句
  2. 检查语法
  3. 判断语义,是select 还是show (DDL、DML、DCL、DQL)
  4. 解析器:专门解析这个SQL语句。生成多种执行计划。
  5. 优化器:选择最优的执行方式。
  6. 执行器:把优化器提供的最优方式的SQL去执行。(提供一个专用的线程和存储引擎层交互)
  7. 接收存储引擎返回的结构化的数据。
    1. 返回给用户
    2. 把拿到的数据存到前端的缓存中。
  8. 记录日志:binlog

存储引擎层

  1. 接收SQL层传来的最优执行的SQL
  2. 和磁盘交互,取出磁盘中的数据(形成一个结构化的表格)
  3. 返回给SQL层,结构化之后生成表格,由专用线程返回给客户端

MySQL结构

MySQL的逻辑对象:做为管理人员或者开发人员操作的对象
1、库
2、表:元数据+真实数据行
3、元数据:列+其它属性(行数+占用空间大小+权限)
4、列:列名字+数据类型+其他约束(非空、唯一、主键、非负数、自增长、默认值)
最直观的数据:二维表,必须用库来存放

MySQL逻辑结构与Linux系统对比
| ----- | ----- |

| MySQL | Linux |
| 库 | 目录 |
| show databases; | ls-l / |
| use mysql | cd /mysql |
| 表 | 文件 |
| show tables; | ls |
| 二维表=元数据+真实数据行 | 文件=文件名+文件属性 |
MySQL的物理结构(了解)

1)MySQL的最底层的物理结构是数据文件,也就是说,存储引擎层,打交道的文件,是数据文件。

2)存储引擎分为很多种类(Linux中的FS)

3)不同存储引擎的区别:存储方式、安全性、性能

myisam:

innodb:
段、区、页(块)

1、段:理论上一个表就是一个段,由多个区构成,(分区表是一个分区一个段)
2、区:连续的多个页构成
3、页:最小的数据存储单元,默认是16k

本文地址:https://www.he-jason.com/dbskill/mysql/489.html
版权声明:本文为原创文章,版权归 黑渐神|he-jason.com 所有,欢迎分享本文,转载请保留出处!
双11拉新分百万红包

评论已关闭!