zoukankan      html  css  js  c++  java
  • mysql的查询语句原理

    mysqld 的程序结构

    1.连接层
    1)检验用户的合法性
    2)提供两种连接方式
    a)TCP/IP
    [root@db02 ~]# mysql -uroot -p123 -h10.0.0.51
    [root@db01 ~]# mysql -uroot -p123 -h127.0.0.1

    b)socket
    [root@db01 ~]# mysql -uroot -p123 -S /usr/local/mysql/tmp/mysql.sock
    [root@db01 ~]# mysql -uroot -p123 -hlocalhost
    [root@db01 ~]# mysql -uroot -p123
    3)建立一个与SQL层交互的线程

    2.SQL层
    1)接收连接层传来的SQL语句
    2)检查语法
    3)检查语义(检查它属于哪种SQL语句:DDL,DML,DCL,DQL)
    4)解析器:解析SQL语句,生成多种执行计划
    5)优化器:接收解析器传来的多种执行计划,选择最优化的一条方式去执行
    6)执行器:执行优化器传来的最优方式的SQL语句
    a)建立一个与存储引擎层交互的线程
    b)接收存储引擎层,返回的结构化成表的数据
    7)写缓存
    8)记录日志


    3.存储引擎层
    1)接收SQL层传来的SQL语句
    2)与磁盘交互,找到数据并结构化成表的形式,返回给SQL层
    3)建立一个与SQL层交互的线程


    三.什么是实例?

    1.MySQL的后台进程+线程+预分配的内存结构。
    2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用。

  • 相关阅读:
    一用就会的数据库
    MQ介绍
    SpringBoot之HandlerInterceptorAdapter
    Swagger2异常 java.lang.NumberFormatException: For input string: ""
    Could not get a resource from the pool
    spring boot 之监听器ApplicationListener
    Nexus的使用
    CentOS7 搭建maven私服Nexus
    centos7安装部署gitlab服务器
    centos7安装nginx
  • 原文地址:https://www.cnblogs.com/gukai/p/10839771.html
Copyright © 2011-2022 走看看