0
点赞
收藏
分享

微信扫一扫

MySQL体系管理

眼君 2022-08-17 阅读 37

客户端与服务端模型

c/s架构的服务 (client/Server)

客户端

mysql

mysqladmin

mysqldump

MySQL的连接方式

TCP/IP

MySQL体系管理_sql

  • mysql -uroot -p123 -h10.0.0.52

MySQL体系管理_sql_02

  • 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

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

mysql服务器构成

实例

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

MySQL体系管理_mysql_03

MySQL体系管理_sql_04

mysql守护进程的程序结构

MySQL体系管理_mysql_05

连接层**

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

MySQL体系管理_数据_06

1.接收连接层传递来的有权限的SQL语句
2.验证SQL语句(syntax)的语法
3.验证SQL语句的语义,执行的是查询,删除,修改...之类的操作
- DML:数据的操作语言(表数据的增删改)
- DDL:数据的定义语言(表结构的增删改)
- DCL:数据的控制语言(权限的授与撤)
- DQL:数据的查询语言(select的关键字查询)
- DTL:事物语言的控制
4.解析器,解析SQL语句,生成多种执行计划
5.优化器,根据解析器生成的多种执行计划,选择最优的一条
6.执行器,执行最优的一条SQL语句
- 提供一个专用的线程,和储存引擎层交互
7.接收存储引擎层返回的数据,将数据传递给连接层
8.如果前面有缓存,将数据写入缓存一份
9.如果开启了binlog,记录日志(binlog)

存储引擎层

1.接收SQL层传递来的SQL语言信息
2.去对应的库下找对应的表中数据,结果化成表的形式,返回给SQL层
3.提供了一个专用的线程,和SQL交互

MySQL的结构

MySQL体系管理_数据_07

MySQL表结构划分

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

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

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

MySQL体系管理_数据_08

使用systemd管理MySQL

[root@m01 ~]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000


举报

相关推荐

0 条评论