1.1本地socket链接方式

socket=/tmp/mysql.sock
mysql -s /tmp/mysql.sock

只能在本地使用,不依赖于IP和端口

1.2远程TCP/IP链接方式

mysql -uroot -p123 -h 10.0.0.51 -P 3306

服务器端的结构组成
mysql +工作线程 +预分配的内存结构

1.3mysqld程序结构
客户端
命令行:

mysql -uroot -p123 -h 10.0.051 -P -3306
select user,host from mysql.user

Sever层

连接层

1.提供链接协议(socket, TCP/IP)
2.验证
3.提供专用连接线程

SQL层

1.语法检查
2.语义分析(DDL,DCL,DML,DTL...)
3.权限
4.解析器:解析预处理(沙盘):得出执行计划:A方案(全表),B方案(索引)
5.优化器:帮我们选择它认为最优的方案(基于代价cost)
6.按照优化器的选择,执行SQL语句
得出执行结果:你需要的数据在磁盘的什么位置
7.查询缓存(query cache默认不开启),可以redis替代
8.日志记录(binlog二进制日志,glog需要认为开启)

存储引擎层

相当于Linux文件系统,和磁盘交互的模块

图片说明
图片说明

** 1.4MySQL的逻辑结构**
逻辑-->抽象
Linux
目录: 名字+属性
文件: 文件名+文件属性+文件内容

MySQL
库:库名+库属性
表: 表名+表属性+表内容+列

show databases
use mysql
show tables
desc user

1.5MySQL物理存储结构
1.段:一个表就是一个段,可以由1个或者多个区构成;段里面的区(extent)不一定时连续的。
2.区(extent):默认1M=连续的64个页(page)
3.页(page):默认16KB=连续的4个block,是最小的I/O单元
4.block:默认4KB=连续的8个扇区
5.扇区:默认521B

图片说明