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

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

1. 服务端和客户端

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

其实过程就是:

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

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

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

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

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

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

  3. 存储引擎
    在上面,都没有去访问真正的表格和数据,都是在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']

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

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

  • Global
  • Session

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

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

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

2.4 状态变量

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值