zoukankan      html  css  js  c++  java
  • 01-mysql实例mysqld进程结构详解

    一、mysql客户端链接服务器

    mysql提供了两种链接方式,一种是tcp/ip,一种是socket链接

    1、tcp/ip

    mysql -uroot -poldboy123 -h 10.0.0.200
    # 通过指定ip和端口链接服务器,可远程链接,生产环境都是用tcp/ip

    2、socket方式

    mysql -uroot -p1 -S /tmp/mysql.sock
    # -S 指定socket文件的位置,替代ip 和 端口, 但是只适用于本地连接,mysql回车登录成功,默认使用的是socket连接
    # windows中没有这种socket文件链接的方式,只能用tcp/ip或管道连接,并且socket文件链接方式只适用于本地连接,

    二、mysql服务器构成-实例

    """
    mysqld是一个数据库的管理程序,kkk.ibd是一个数据库文件
    我们如果要通过数据库管理程序操作数据库文件,就要把mysqld
    运行起来,加载到内存中,kkk文件也要加载到内存,然后由mysqld
    处理文件,处理完后,再将ibd文件重新写回磁盘,
    mysqld是守护进程,不退出
    """

    那到底mysql实例是什么

    mysql在启动过程

    • 启动后台守护进程,并生成工作线程
    • 预分配内存结构供MySQL处理数据使用

    实例

    • MySQL的后台进程+线程+预分配的内存结构

    1、工作过程

    例:

    select user,host,password from mysql.user;

    连接层功能:

    1、提供通信协议

      TCP/IP

      socket

    2、用户验证

      用户的合法性:用户名、密码 --------》mysql.user

    3、master thread

      链接成功thread分配一个专用线程(Thread)接收后续的用户请求(查询),但并没有能力直接处理SQL,转给SQL层继续处理

    SQL层

    1、接收上传转发过来的SQL

    2、语法检查

    3、语义检查(检查是什么类型的SQL),以Select为例,检查到是一个DQL,交给查询类专用的解析器,权限验证,验证当前用户是否有执行查询的权限

    4、解析器将SQL解析成SQL接口能够识别方式(执行计划explain),解析完成后,交给优化器进行优化

    5、优化器,做判断,选择一个它认为成本最低的执行计划,交给执行器

    6、执行器执行explain,生成执行结果(去将数据文件的第N个数据页把我需要的数据取出来)

    7、把执行结果交给下层(存储引擎层)继续处理

    8、查询缓存

    存储引擎层

    1、接收上层的执行结果

    2、取出磁盘文件的相应数据(十六进制二进制)

    3、返回给SQL层,结构化之后(生成表格,人能看懂的),由专用线程thread返回给客户端

  • 相关阅读:
    微信浏览器取消缓存的方法
    iphone safari浏览器CSS兼容性的解决方案集合
    配置iis支持.json格式的文件
    win7下使用IIS服务器及自定义服务器端包含模块(SSI)步骤
    前端组件库集合
    ClientValidationFunction
    java 查询solr时间格式
    为何大量网站不能抓取?爬虫突破封禁的6种常见方法
    反爬虫四个基本策略
    ScheduledExecutorService 定时器用法
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13757905.html
Copyright © 2011-2022 走看看