MySQL5.7源码分析--解析

select语句会走的case COM_QUERY判断

具体流程如下:

1.获取网络包数据,拿到查询语句,放入thd->query

alloc_query(thd, packet, packet_length)

2.先查询缓存,缓存命中直接返回结果,未命中则解析

功能集中在mysql_parse()函数中

mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);

查询缓存,命中直接返回

query_cache_send_result_to_client(thd, rawbuf, length)

未命中,则进行sql解析,lex进行词法解析,yacc进行语法解析,生成解析树

然后调用mysql_execute_command函数进行优化和执行

mysql_execute_command(thd);

相关推荐

  1. MySQL5.7分析--

    2024-03-30 19:54:01       39 阅读
  2. flink分析 - yaml

    2024-03-30 19:54:01       40 阅读
  3. SpringBoot

    2024-03-30 19:54:01       60 阅读
  4. ConcurrentHashMap

    2024-03-30 19:54:01       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 19:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 19:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 19:54:01       82 阅读
  4. Python语言-面向对象

    2024-03-30 19:54:01       91 阅读

热门阅读

  1. 软件测试中的顶级测试覆盖率技术

    2024-03-30 19:54:01       37 阅读
  2. linux下 罗技鼠标睡眠唤醒问题的解决

    2024-03-30 19:54:01       48 阅读
  3. 【C语言】宏和条件编译

    2024-03-30 19:54:01       44 阅读
  4. centos7安装docker

    2024-03-30 19:54:01       44 阅读
  5. Kafka入门到实战-第一弹

    2024-03-30 19:54:01       38 阅读
  6. torch中的nonzero() 方法

    2024-03-30 19:54:01       39 阅读
  7. 设置docker开机自启动,并设置容器自动重启

    2024-03-30 19:54:01       44 阅读
  8. 题目:用*号输出字母C的图案。

    2024-03-30 19:54:01       44 阅读
  9. linux下tar命令的压缩和解压详细使用方法

    2024-03-30 19:54:01       45 阅读