发布网友 发布时间:2022-04-15 19:18
共3个回答
懂视网 时间:2022-04-15 23:39
启动MySQL1、初始化模块执行&&存储引擎初期化执行
2、1中执行完成后 ---->连接管理模块接手
3、连接管理模块启动处理客户端连接请求的监听程序(tcp/ip 网络监听、unix 的socket)
4、启动完成、准备接收请求
5、监听到客户端的连接请求(运用网络交互模块中相关功能)---->通过Client & Server 交互协议模块协议----通讯匹配---->
6、连接管理模块----请求转发---->线程管理模块----控制转交---->连接线程模块
7、连接线程模块----调用---->用户模块进行授权检查----通过---->线程池请求线程
8、开启日志的情况下,日志会同步产生
query类型请求(调用Parser(Query 解析和转发模块))---->(访问控制模块同步执行)
---->(select 类型)调用查询缓存模块---->检查query cache 中是否已经存在---->存在将cache 中的数据返回给连接线程模块
不存在传回query 解析器(Query 优化器模块)
---->(DML 或者DDL)给表变更管理模块
---->表维护模块(更新统计信息、检测、修复和整理类的query)
---->复制模块(复制相关的query)
---->状态收集报告模块(请求状态的query)
command类型请求---->直接执行(不需要调用Parser)
9、以上执行完成---->连接线程模块---->返回执行结果
附上图片:
热心网友 时间:2022-04-15 20:47
你可以用enum('true','false')或者用int(bit) 的0,1,然后在程序后台判断.热心网友 时间:2022-04-15 22:05
加一个标识列0,1;用case when判断