mysql客户端、服务端、请求过程、存储引擎相关基础知识

mysql基础知识:
在这里插入图片描述

mysql客户端与服务端
  • 服务端进程默认为mysqld

  • 客户端进程默认为mysql

  • Mac上mysql安装目录为:/usr/local/mysql

  • /usr/local/mysql/bin/目录下是mysql的可执行文件

    • mysqld
    • mysqld_safe
    • mysql.server
    • mysql_multi
mysql启动程序
  • mysqld

    • 运行mysqld可直接启动一个mysql服务器进程
  • mysqld_safe

    • 启动脚本,间接调用mysqld,同时启动监控进程
  • mysql.server

    • 启动脚本,间接调用mysqld_safe,
      • 属于链接文件
    • mysql.server start: 启动服务器程序
    • mysql.server stop: 终止正在运行的服务器程序
  • mysql_multi

    • 计算机可运行多个服务器进程
    • 主要是监控每一个服务器进程的启动与停止
启动mysql客户端程序
  1. mysql -h主机名 -u用户名 -p密码
  2. 服务器运行在本机,则-h可以省略,或者为-hlocalhost , -h127.0.0.1, 也作 --host=localhost,-uroot也作–user=root, -p123456 也作 --password=123456
  3. 常见本地mysql启动命令为:mysql -uroot -p123456, 也可 mysql -u root -p123456, 即中间可以有间隙,除了密码
  4. 密码可以不输入,避免密码泄漏,新开一行输入:mysql -uroot -p
  5. 可以在多个终端窗口启动多个mysql客户端程序
  6. 参数摆放未知随意,如也可mysql -uroot -hlocalhost -p
客户端与服务端进程连接
  • 运行的客户端与服务端程序本质是个进程(操作系统的相关知识,程序与进程的关系,运行的程序即为进程)

  • 客户端向服务端发送请求得到响应就是进程间的通信

通信方式
  • TCP/IP
    • 使用mysqld -P3307可指定服务器监听哪个端口,默认是3306,如果被占用可用其他端口,范围是0~65535
    • 客户端启动: mysql -h127.0.0.1 -uroot -p -P3307
      • -P 是大写,区别于密码的-p
  • 命名管道与共享内存(Windows)
  • 套接字(类Unix)
    • 指定主机名为localhost
    • 指定–protocol=socket
    • 默认的套接字文件路径为/tmp/mysql.sock
服务器处理客户端请求过程

在这里插入图片描述

  • 连接管理
    • 如果有客户端进程连接至服务器进程,服务器端就会创建一个线程来专门处理与客户端的交互过程,如果客户端与服务端断开连接,服务端不会立刻销毁这个线程,会将这个线程缓存,当新的客户端连接服务端时,从缓存中拿到该线程然后分配给新的客户端进程。
    • 线程分配太多会影响性能,所以需要控制连接至服务端的客户端数量
  • 解析与优化
    • 查询缓存
      • mysql服务端会将查询请求和结果缓存,当下次有一模一样的请求时,直接从缓存中获取结果。如果请求发生变化,比如sql同刚才的有一丁点儿不一样,都会重新查询
      • 使用了部分函数比如now函数,每次时间都不一样,所以不会缓存
      • 使用了系统表如mysql,sys等不会缓存
      • 使用了用户的自定义函数,不会缓存
      • 表结构和数据发生变化, 比如对表执行了update,insert,delete,alter,drop,truncate等操作,该表涉及的所有查询缓存都将被删除
      • mysql8.0之后将缓存操作删除
    • 语法解析
      • 检查查询的sql语法是否正确,主要涉及词法分析,语法分析,语义分析等
    • 查询优化
      • 生成执行计划,根据执行计划来看使用哪些索引,哪些查询方法
  • 存储引擎
    • InnoDB
    • MyISAM
    • 存储引擎封装了数据的存取操作

物理上如何表示记录,怎么从表中读取数据,怎么把数据写入具体的物理存储器上,这都是存储引擎负责的事情

将不涉及数据存取的操作命名为MYSQL_server: 连接管理,查询缓存,语法解析,查询优化

存取数据的功能是存储引擎的功能,存储引擎向上层的MYSQL_server提供api接口。

MYSQL_server执行完查询优化后,就根据执行计划调用存储引擎的api,拿到数据返回给客户端

常用的存储引擎是InnoDB 和 MyISAM

查看存储引擎

show engines;

在这里插入图片描述

  1. Engine: 存储引擎名称
  2. Support:表示该存储引擎是否可用,default表示当前服务器程序默认的存储引擎
  3. Comment:对该存储引擎的描述
  4. Transactions:该存储引擎是否支持事务处理
  5. XA:该存储引擎是否支持分布式事务
  6. Savepoints:该存储引擎是否支持部分事务回滚
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值