MySQL客户端与服务端模型
MySQL是C/S结构的服务
MySQL客户端
- mysql
- mysqladmin
- mysqldump
图形化
- SQLyog
- navicat
MySQL服务端
- mysqld
MySQL服务端的连接方式
- TCP/IP连接
mysql -uroot -p123 -h10.0.0.51
- Socket连接
mysql -uroot -p123 -S /app/mysql/tmp/mysql.sock
连接示例
## MySQL默认使用socket连接
mysql -uroot -p123 // socket连接方式
mysql -uroot -p123 -h127.0.0.1 // TCP
mysql -uroot -p123 -hlocalhost // Socket
mysql -uroot -p123 -h10.0.0.51 -S /tmp/mysql.sock // TCP
mysql -uroot -p123 -S /tmp/mysql.sock -h10.0.0.51 // TCP
## 总结
1.MySQL默认使用Socket连接,TCP连接需要建立三次握手,速度比Socket慢
2.不是只要-h就一定是TCP连接
3.当-h和-S一起出现时,如果-h指定的是IP地址,那么一定是TCP连接
MySQL服务端构成
实例
由 一个进程 + 多个线程 + 一个预分配的内存结构
Win:服务没有预分配内存,在不考录虚拟内存的时候,启动程序的总内存不会大于物理内存,可能会蓝屏,或卡住。
linux:服务有预分配内存,在不考录虚拟内存的时候,当启动程序的总内存大于物理内存的话,虚拟机内会使用oom killer机制清除掉占用内存最大的那个程序。
oom killer (Out of Memory Killer)
当系统因为内存不足而无法满足进程的内存需求时,OOM Killer会自动触发,它的主要作用是终止某些进程以释放内存资源,从而避免系统崩溃或无响应。
mysqld程序的工作流程
- 连接层
- 提供了两种连接方式
- TCP
- Socket
- 验证用户的合法性
- 权限
- 用户名
- 密码
- 验证黑白名单
- 验证主机和端口的黑白名单
- 提供了一个和SQL层建立连接的专用线程
- 提供了两种连接方式
- SQL层
- 接受连接层传来的SQL语句
- 验证语法
- 验证语义
- DML(insert update delete)
- DDL(create database create table drop)
- DQL(select show call desc explain)
- DCL(grant revoke)
- DTL(Database Transaction Language)TCL Transaction Controller Language
- 解析器:解析后面的SQL语句
- 优化器:提供几种比较优化的执行方案
- 执行器:选择优化器提供的最优的一种方案,去执行
- 提供一个与存储引擎建立连接的线程
- 接收存储引擎层结构化成表的数据
- 如果有缓存,写缓存
- 记录日志(binlog)
- 存储引擎层
- 接收SQL层传来的SQL语句
- 去磁盘上取出SQL语句需要的数据
- 结构化成表格的形式返回给SQL层
MySQL的结构
- 逻辑结构:数据库管理员的所有操作对象(MySQL的资源)
- 库
- 表
- 真实数据
- 元数据:用来描述数据属性的数据
- 列 (字段)
- 列名字 (字段名)
- 数据类型
- 约束
- 是否为空
- 默认值
- 范围
- 注释
- 索引
- 其他属性
- 行数
- 大小
- 权限
- 列 (字段)
- 物理结构:最低层的物理数据
物理结构区别
frm:format
而.frm文件是MyISAM表的元数据文件
## myisam
表结构:
[root@db01 data]# ll mysql/user*
-rw-rw---- 1 mysql mysql 10684 Jul 18 22:50 mysql/user.frm
-rw-rw---- 1 mysql mysql 236 Jul 19 10:53 mysql/user.MYD
-rw-rw---- 1 mysql mysql 2048 Jul 19 10:54 mysql/user.MYI
## innodb
[root@db01 data]# ll yl/yl_test*
-rw-rw---- 1 mysql mysql 8556 Jul 20 09:26 yl/yl_test.frm
-rw-rw---- 1 mysql mysql 98304 Jul 20 09:26 yl/yl_test.ibd
MySQL文件系统单位
Linux文件系统CentOS7:xfs
Linux文件系统CentOS6:ext4
MySQL | Linux |
---|---|
库 | 目录 |
show databases; | ls -l |
use mysql | cd /mysql |
表 | 文件 |
show tables | ls |
二维表=元数据+真实数据行 | 文件=文件名+文件属性 |
段:一个段,是由多个区组成的(一张表)
区:一个区,是由多个页组成的,64个页为一个区1024k=1M
页:最小单位,一页,16k
标签:体系,rw,SQL,MySQL,TCP,mysql,连接,结构
From: https://www.cnblogs.com/xiutai/p/17749276.html