• 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;

  • 相关阅读:
    使用zipkin2在SpringCloud2.0环境下追踪服务调用情况
    Spring Cloud负载均衡:使用Feign作客户端负载均衡
    Spring Cloud负载均衡:使用zuul作服务器端负载均衡
    Word模板替换
    【转】Eureka集群
    巧用JavaScript语言特性解耦页面间调用(观察者模式)
    MySQL 视图触发器事务存储过程函数
    MySQL py模块的链接Navicat可视化工具
    MySQL 单表查询多表查询
    MySQL 表与表之间建立关系
  • 原文地址:https://www.cnblogs.com/hangzhi/p/10947982.html
Copyright © 2020-2023  润新知