1、MySQL两种连接方式
# TCP/IP方式连接
[root@localhost ~]# mysql -uUSER_NAME -p -h "MYSQL_SERVER_IP" -P"MYSQL_SERVER_PORT"
# socket方式连接
[root@localhost ~]# mysql -uUSER_NAME -p
2、MySQL中mysqld服务器进程结构
2.1、SQL语言分类
- DQL 数据查询语言
- DDL 数据定义语言
- DML 数据操作语言
- DCL 数据控制语言
2.2、连接层
- 提供链接协议(TCP/IP,Socket)
- 验证用户名、密码、IP地址等信息的合法性
- 派生一个专用连接线程(接受语句、返回结果)
可使用show processlist;
查看已连接线程 - 将语句交给下一层处理
2.3、SQL层(SQL接口)
- 接受语句
- 语法检查和SQL_MODE
- 语义检查与权限检查
- 解析器进行语句解析,生成执行计划(解析树)
- 通过优化算法(基于执行代价),根据算法,找到代价最低的执行计划。
代价:CPU IO MEM - 优化器会选择最优的执行方法
- 语句执行器真正运行SQL语句
- 提供查询缓存(默认不开启)
- 日志记录(审计日志、通用日志、二进制日志,默认不开起)
2.4、存储引擎层
本层是真正和磁盘打交道的一个层次,根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成二维表,再由连接层线程返回给用户。
2.5、MySQL逻辑存储结构
- 库
用于存储表的地方 - 表
用于存储数据,表包含:列(字段)、列属性、数据行(记录)、表属性(元数据)
2.6、MySQL物理存储结构
-
库
使用文件系统上的目录来表示
-
表:
-
MyISAM(ext2文件系统)
user.frm:存储的表结构(列,列属性)
user.MYD:存储的数据记录
user.MYI:存储索引
-
InnoDB(XFS文件系统)
time_zone.frm :存储的表结构(列,列属性)
time_zone.ibd :存储的数据记录和索引
ibdata1 : 数据字典信息
-
2.7、innoDB的段、区、页
- 在非分区表的情况下,数据库每次默认分配64个连续的页,每个页16K,合计空间1M,这个空间称之为一个区。
- MySQL的表根据存储需求,会由多个区组成一个表,我们把一个表称之为一个段