《MySQL是怎样运行的》学习笔记(1)——结构和配置

mac2024-08-22  59

文章目录

1. 服务端和客户端2. 配置2.1 在命令行中配置2.2 配置文件2.3 配置优先级2.3 系统变量2.4 状态变量

学习资料: MySQL是怎样运行的:从根儿上理解MySQL

1. 服务端和客户端

使用数据库也是用客户端去和服务端通信,在安装时,mysqld命令就是服务器端的执行命令,mysql就是客户端的执行命令。

其实过程就是:

启动服务端和客户端的进程;客户端和服务端进来通信;客户端将一段文本(sql语句)发送给服务端;服务端接收该文本,进行处理,然后返回结果;客户端收到结果,展示。

客户端去和服务端通信的连接方式有三种:

TCP/IP;命名管道或共享内存——windows;Unix套接字(Socket)——类Unix;

服务端在处理客户端发来的文本时,主要包括三个部分:

连接管理 一个服务端上可能连接多个客户端,每个客户端进程连接到服务端,服务器进程就会创建一个线程来处理与其的交互,但是在该客户端断开连接的时候,服务器并不会销毁线程,而是缓存,用于分配给新的客户端连接,避免了频繁的创建和销毁线程开支,这也对应着并发连接数的设置。

解析和优化 对于客户端传递过来的sql文本,要经过查询缓存、语法解析、查询优化三个步骤,才能读懂这段文本的意思,然后生成执行计划。就像读懂了设计图纸,然后再排期、开干!

存储引擎 在上面,都没有去访问真正的表格和数据,都是在Mysql Server层面做的逻辑工作,因为无论是表格,还是一行一行的记录,其实都是逻辑层面,具体在物理上如何表示记录,磁盘是如何存储的,这属于存储引擎的工作。 存储引擎有很多种,各自的存储结果和算法都不用,以API的形式给Mysql Server提供调用接口。

注:语法解析其实包括了很多步:词法解析、语法分析、语义分析等

2. 配置

就像手机你也设置密码,提醒事项等这种东西一样,Mysql也可以配置,有一些是默认配置。

2.1 在命令行中配置

也就是在使用 mysql,mysqld时,进行的配置,其一般形式为:

mysqld --选项1[=值1] --选项2[=值2] … --选项n[=值n]

例如配置默认存储引擎:

mysqld --default-storage-engine=MyISAM
2.2 配置文件

上面是在命令行中配置的,也就是针对那一次连接进行的配置,可以将其配置为文件,这个好理解。

配置文件中的格式基本为:

[mysqld] \# 注释 option1 option2 = value2

例如: [server] ( …) [mysqld] ( …) [client] ( …) [mysql] ( …)

2.3 配置优先级

在配置文件中,以最后一个配置为准。 命令行的优先级高于配置文件。

2.3 系统变量

show [global|session] variable [like 'xxx']

可以在服务器程序运行过程中进行动态修改,而无需重启服务!

系统变量分为两种不同的作用范围:

GlobalSession

顾名思义,一个是全局的,一个是针对每一个连接的客户端的配置。设置方法如下:

set [global|session] 系统变量名=值

不写的话,默认是session,正常,这样更安全。

2.4 状态变量

如果说上面是设置的话,那么状态变量就是用来查看的了,是在程序运行过程中,系统产生的一些状态信息,

show [global|session] status [like 'xxx']

最新回复(0)