1.mysql逻辑架构
发布日期:2021-05-08 05:54:25 浏览次数:22 分类:精选文章

本文共 796 字,大约阅读时间需要 2 分钟。

一.基础架构

image-20210415110040543

MySQL体系结构图

1.连接层

连接层负责接受连接、协议解析、授权验证。

2.服务层

mysql核心层,负责sql语句的解析、优化、查询缓存。所有的跨引擎功能在这里实现:存储过程、触发器、视图。

3.存储引擎层

数据的存储和读取。上层通过API与其交互,屏蔽了引擎差异。

二.线程模型

1.no thread模式

所有连接在主线程处理,并发低。

2.one connection per thread

主线程接受连接,验证通过后,为连接分配一个工作线程。工作线程负责连接的sql语句分析、优化、执行。大量连接会导致内存占用高,不断的线程切换,连接的创建销毁会导致线程的创建销毁。

3.thread pool

img

线程池分为多个group,主线程接受连接,验证通过后,将连接放入到group中。
group的lisenter线程负责group管理的连接网络事件的监听(epoll_wait),当连接有请求到来时,读取请求放入到队列中,group工作线程会从队列中取出一个请求执行。
thread pool有点是n个连接复用m个工作线程,。可以很好的控制线程数量。解决高并发时one connection per thread模式创建大量thread问题。
请求排队执行导致连接的锁释放慢,所以对于已经加锁的连接后续请求放入优先队列中。可以更快的释放锁资源,减少并发竞争。

三.连接池 + 线程池

连接池复用连接降低了连接的创建和销毁。请求进行排队处理,缓存了应用对mysql server的冲击压力。连接池控制了mysql server线程数量,复用工作线程。

四.执行流程

MySQL工作流程图

参考:

高性能mysql
https://www.cnblogs.com/cchust/p/4510039.html
https://blog.csdn.net/zhou307/article/details/104117585

上一篇:2.mysql 锁 并发控制
下一篇:信号产生到触发过程

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月30日 16时19分59秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章