MySQL连接的建立与使用

在 MYSQL的启动过程中,可以看到在 mysqld_main() 函数的最后调用了 mysqld_socket_acceptor->connection_event_loop() 函数用来处理MySQL的连接,这里通过源码分析一下MySQL连接的建立与使用过程:

  1. 在死循环中调用 m_listener->listen_for_connection_event() 等待连接进入

  2. 如果有连接进入,则调用 precess_new_connection() 处理连接

  3. 调用 check_and_incr_conn_count() 检查是否有空余连接[当前连接数是否大于 max_connections], 如果没有空余连接, 结束处理流程;

注意:这里允许 max_connections + 1 个连接,最后一个连接是为 super user保留的。

  1. 如果存在空余连接,则对连接进行处理

  2. 查看 thread cache 中是否有空闲 thread,如果有,使用 cached thread

  3. 如果不存在,则创建一个新的线程来处理这个连接

  4. 线程调用 handle_connection() 线程处理函数,初始化一个 thd 对象,并将其加入 thd list; 并初始化 lex 词法解析器,进行连接身份验证,初始化 thd,准备执行语句。

  5. 调用 do_command(). 处理用户命令。

Original: https://www.cnblogs.com/juanmaofeifei/p/16146201.html
Author: 卷毛狒狒
Title: MySQL连接的建立与使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590931/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 9、手写一个starter

    一、starte详解: 1、starter场景启动器: SpringBoot-starter是一个集成接合器,主要完成两件事: (1)、引入模块所需的相关jar包 (2)、自动配置…

    数据库 2023年6月6日
    077
  • JavaWeb-MVC、过滤器

    一、MVC架构图 Model 业务处理:业务逻辑(Service) 数据持久层:CRUD(Dao) View 展示数据 提供连接发起Servlet请求(a,form,img&#82…

    数据库 2023年6月16日
    093
  • 连接数据库空异常

    解决过程(嫌麻烦可以直接看结论): 首先我以为是我的数据库驱动名字什么的没有写对,但是确实是对的,使用的是 com.mysql.cj.jdbc.Driver ,也没有发现多余的空格…

    数据库 2023年6月16日
    073
  • podman

    podman Podman 是一个无守护程序、开源的 Linux 原生工具,旨在使用开放容器计划 (OCI) 容器和容器映像轻松查找、运行、构建、共享和部署应用程序。Podman …

    数据库 2023年6月14日
    076
  • HTML&CSS-盒模型运用居中方式合集

    { margin: 0; padding: 0; list-style: none; 清除浏览器默认样式 .father1 { width: 400px; height: 400p…

    数据库 2023年6月11日
    090
  • MySQL高性能索引策略和查询性能优化

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    073
  • 工具 | 常用 PostgreSQL 预防数据丢失方案

    作者:张连壮 PostgreSQL 研发负责人从事多年 PostgreSQL 数据库内核开发,对 Citus 有非常深入的研究。 PostgreSQL 本身不具备数据闪回和数据误删…

    数据库 2023年5月24日
    068
  • Kmp算法

    算法流程: kmp_search(char[] text,char[] pattern) 构建前缀表 prefix[0]默认&#…

    数据库 2023年6月11日
    0104
  • 红黑树

    2-3-4树 JAVA技术交流群:737698533 定义 所有的叶子节点都拥有相同的深度 节点只能是2-节点,3-节点,或者4-节点 2节点 包含一个元素的节点,有两个子节点 3…

    数据库 2023年6月16日
    057
  • 你的 SQL 还在回表查询吗?快给它安排覆盖索引

    什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键、聚集索引、辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引…

    数据库 2023年5月24日
    078
  • Linux 7安装Mysql5.7版本

    Mysql 5.7的安装搭建 首先去到官方网站的下载链接中找到对应你Linux服务器版本的mysql软件包 https://dev.mysql.com/downloads/repo…

    数据库 2023年5月24日
    088
  • Hadoop生态一—分布式文件系统HDFS

    分布式文件系统: 统一管理分布在集群上的文件系统设计思想分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; 在大数据系统中作…

    数据库 2023年6月6日
    074
  • Go LRU Cache

    目录 LRU Cache container/list.go 2.1 list 数据结构 2.2 list 使用例子 transport.go connLRU 结尾 正文 1. L…

    数据库 2023年6月9日
    081
  • 线程池使用InheritableThreadLocal出现数据脏乱分析和解决方案

    背景 在测试环境上遇到一个诡异的问题,某些业务场景需要记录操作日志,有段时间发现记录的数据会被覆盖,例如当前用户的操作记录会被其他用户覆盖;这个现象是每次重启服务后一小段时间内就正…

    数据库 2023年6月6日
    095
  • springboot~HandlerFunction和RouterFunction

    HandlerFunction和RouterFunction RouterFunction为我们应用程序添加一个新的路由,这个路由需要绑定一个HandlerFunction,做为它…

    数据库 2023年6月6日
    063
  • 学习笔记——Django项目中请求与响应(json数据)

    2022-10-04 测试json数据与Django项目与pycharm连接,在”postman”软件中。”postman”是一个接…

    数据库 2023年6月14日
    0134
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球