Mysql基础

Mysql基础

启动服务

通过安装目录下的执行文件就可以启动MySQL服务,如

  • mysqld(代表MySQL服务程序)
  • mysqld_safe(启动脚本,启动mysqld时还同时启动了另外一个监控进程,是守护进程,如果服务进程挂了,监控进程会帮助重启,可以用mysqladmin强制关闭)
  • mysql.sever(链接文件内含启动脚本,通过命令mysql.sever start/stop调用mysqld_safe,其他启动参数设置通过读取配置文件)
  • mysqld_multi(可对多个服务进程启动/停止/监控)

 

通信

网络通信:客户端与服务端之间使用TCP协议进行通信,通常为3306端口

本地通信

windows:

命名管道:启动服务程序的命令中加上--enable-named-pipe,启动客户端程序的命令中加上--pipe或--protocol=pipe

共享内存通信:只能用在服务端客户端均在一个机器上

unix:

同一台机器上,使用unix域套接字文件通信;服务器启动时指定socket参数,默认监听unix域套接字文件/tmp/mysql.sock;客户端启动时指定--protocol=socket的启动参数,则默认连接到这个文件

不同机器上,采用SSL安全套接字的网络进行通信

服务端处理客户端的请求

image_1c8d26fmg1af0ms81cpc7gm8lv39.png-97.9kB

  1. 连接管理:客户端通过上述通信方式与服务端建立连接。客户端携带认证信息请求服务端连接,认证通过后,服务端与客户端建立连接,同时为其创建一个处理线程,如果客户端关闭连接,处理线程回收缓存但是不会被销毁等待指派给下个客户端。

  2. 解析与优化

    1. 查询缓存:查询存储引擎中的数据前先查询缓存中是否存在(但是如果语句有一点点不同或包括某些系统函数/用户自定义变量和函数的/一些系统表,缓存都不会命中),存在就直接返回。

      mysql的缓存系统会监听表如果有任何更新操作就会更新缓存。因为需要维护这块缓存而造成一系列的开销,从mysql5.7.20开始不推荐使用查询缓存,8.0被删除。

    2. 语法解析:编译过程

    3. 查询优化:因为客户端写的sql执行起来效率并不是很高,所以mysql的优化程序会对语句进行一些优化,并生成一个执行计划(比较查询成本选择最低的那个),我们可通过explain查看这个语句的执行计划。包含用到的索引查询,表之间的连接顺序。

  3. 存储引擎:(在这之前都没有接触到数据,要么通过表信息计算要么猜以计算出成本)其实就是按照执行计划将表数据存储写入的物理存储处理器。存储引擎有多种可通过show engines查看当前mysql服务器支持的引擎。我们在创建表时会同时声明当前表的存储引擎,后续也可修改。ALTER TABLE engine_demo_table ENGINE = InnoDB;

 

posted on 2019-05-30 10:09  hangzhi  阅读(129)  评论(0编辑  收藏  举报

导航