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