0
点赞
收藏
分享

微信扫一扫

CentOS MySQL体系管理

Star英 2022-08-05 阅读 76

MySQL体系管理

C/S架构的服务

Client/Server

客户端

  • mysql
  • mysqladmin
  • mysqldump

MySQL的连接方式

  • TCP/IP

image.png

 mysql -uroot -p123 -h10.0.0.51
  • Socket

image.png

mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock

问题:

1.mysql默认连接方式   # Socket
不需要经过TCP三次握手四次挥手

2.mysql -uroot -p123    # Socket
什么都不加,走默认连接方式

3..mysql -uroot -p123 -hlocalhost   # Socket
不是所有的-h都是TCP

4.mysql -uroot -p123 -h127.0.0.1    # TCP
只要-h后面加IP地址,就是TCP

## 错误写法(-h和-S只能写一个)
5.mysql -uroot -p123 -h10.0.0.61 -S /application/mysql/tmp/mysql.sock   # TCP

6.mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock -h10.0.0.61   #TCP
只要加-h后面是IP地址,不管socket写在什么位置,一律TCP连接

MySQL服务器构成

实例

MySQL的后台进程+多个线程+预分配的内存结构

image.png

image.png

mysqld守护进程的程序结构

image.png

  • 连接层
1.提供两种连接方式
    - TCP
    - Socket
2.验证用户的合法性
3.提供了一个专用的线程,接收SQL和SQL层交互
  • SQL层

image.png

1.接收连接层传递来的有权限的SQL语句
2.验证SQL语句(syntax)的语法
3.验证SQL语句的语义,执行的是查询,删除,修改....之类的操作
    - DML
    - DDL
    - DCL
    - DQL
    - DTL
4.解析器,解析SQL语句,生成多种执行计划
5.优化器,根据解析器生成的多种执行计划,选择最优的一条
6.执行器,执行最优的一条SQL语句
    - 提供一个专用的线程,和存储引擎层交互
7.接收存储引擎层返回的数据,将数据传递给连接层
8.如果前面有缓存,将数据写入缓存一份
9.如果开启了binlog,记录日志(binlog)
  • 存储引擎
1.接收SQL层传递来的SQL语句信息
2.去对应的库下找对应的表中数据,结构化成表的形式,返回给SQL层
3.提供了一个专用的线程,和SQL交互

MySQL的结构

  • 逻辑结构
    • MySQL数据库管理员的操作对象
      • 元数据
      • 列(字段、列明)
      • 其他属性(数据类型、是否非空、默认值、主键、唯一、自增....)
      • 真实数据
  • 物理结构
    • 最底层的数据文件

MySQL 表结构划分

段:由多个区构成,一张表,就是一个段

区:由多个页构成,一个区,由64个页构成,1M

(块、页)block:MySQL最小的存储单元,默认16k

image.png

举报

相关推荐

0 条评论