• mysql笔记7--一句查询语句的过程


    1 sql语句示例

    1 select *from A where id=1

    2 mysql基本架构图

    (1)Mysql分为Server层和引擎层两个部分

    (2)Server层包括连接器,查询缓存,分析器,优化器等,其功能包含了大部分内置函数(日期,时间等)。

    (3)存储引擎默认使用InnoDB。其所有组件的基本架构图如下所示

    3 Server层相关组件原理

    • 执行逻辑第一步连接器

       (1) 首先连接数据库,连接器负责与客户端建立连接,获取相关权限和管理这个连接。认证你的身份就是输入用户名和密码,如果不对,会返回没有权限,如果用户名

               密码正确,就会从权限表中取出相应用户的权限。

               通过命令显示当前的连接数,以及哪些是空闲连接(也就是字段为sleep的。那么如果客户端长时间保持连接但是没有什么其他的操作,连接器会自动的将其断开,默认8小时。配置文件中的wait_timeout

               

               (2)长连接与短链接

          长连接:客户端连接上以后,客户端保持请求,一直的使用这个连接。------>内存占用率高,导致OOM(系统杀死进程),采取的措施

             定期断开连接。

              mysql5.7以后的版本,当执行完一次操作时间比较长的任务时,可以通过mysql_reset_connect重新的初始化连接的资源。

                          短链接:   客户端连接以后,操作一小会就断开,下次操作再连。

    • 执行逻辑第二步查询缓存 

        (1) 查询缓存原理

                   当连接成功以后,比如咱们使用select查询,首先去缓存查看,缓存中是按照key-value的方式存储,key为执行的操作方法,value为执行操作后的结果,如果命中,直接返回查询

         查询结果。

         (2) 为什么不要使用查询缓存?

             因为查询缓存的失败率很高,因为只要一个表更新,这个表所有的查询缓存就会清空。mysql5.7提供了参数去掉查询缓存,参数query_cache_type=DEMAND.mysql5.8

                 没有了缓存查询模块。

    • 执行逻辑第三步分析器

        (1)分析器步骤

            分析器先做词法分析,比如通过"select"得知道是查询,"A"是表等。-------->语法分析,也就是看是否满足mysql语法,一般错误会提示第一个出现错误的位置。

    • 执行逻辑优化器

          经过了分析器大概知道了想做什么,那么优化器是从多种方案中选择一种更好(效率)。一旦优化得阶段确定,那么执行方案就确定了

    • 执行逻辑执行器

         (1)确认权限

            先判断是否有权限对表进行相关操作,没有则报错。如果有权限,那么执行器会根据表得引擎定义,使用引擎提供的接口。

          (2)执行器执行流程------比如最开始的创建的A表

            调用引擎取表第一行,判断ID是否为1,如果是1存在结果集,不是则跳过

             调用殷勤处理第二行,重复相同的逻辑

            综合所有结果集和返回给客户端。

    4 总结

      学习了一个简单的select操作都经历哪几个步骤,每个步骤的具体作用是做什么,以及相关组件的优点缺点。

  • 相关阅读:
    完全平方数、樱花两个简单数论题
    判断组合数的奇偶性
    字符翻转
    完全平方数2
    均衡操作
    最遥远的距离
    均衡操作2
    csp2021阅读程序欧拉筛求1到N之间所有数字的约数个数与约数之和
    实验二 OpenSSL API使用
    改进ls的实现(课下作业)
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/11938223.html
Copyright © 2020-2023  润新知