嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

要想学习mysql,体系结构这一块肯定跑不了。

目的:认识和了解mysql是怎么从头来运行一个命令的
刚开始只做大概了解即可,到了一定时间很多时候会和这个结构挂钩。


以下是结构图:

体系结构图

提问了 2016-02-18 11:14:31

jkant's gravatar image

jkant ♦♦
11131137138
采纳率: 3%


先来解释各个部分:

1.connectors:其他语言与sql交互.

2.management services & utillties:管理服务和工具组件.备份,恢复,安全,复制,集群,管理,配置,数据传输和数据

3.connection poll:连接池组件.管理缓冲用户连接,线程处理等需要缓存的需求。验证,线程回收,连接限制,检查内存,缓存

4.sql interface:sql接口组件.接受用户的SQL命令,并且返回用户需要查询的结果。DMl,DDL,存储,视图,触发器等。

5.parser:查询分析器组件.查询转换以及对象权限

6.optimizer:查询优化器.

7.cashes & buffers:缓冲组件. 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。 这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

8.pluggable storage engines:插件式存储引擎.

9.file system:物理文件.

10.files & logs:文件和日志.

永久链接

已回答 2016-02-18 11:18:10

jkant's gravatar image

jkant ♦♦
11131137138
采纳率: 3%

举个列子分析:

比如我有一个sql,他的执行过程是怎么样的?

1.首先可以确定的是数据库是启动的(需要管理服务和工具组件),并且肯定需要.file system,files & logs用于存储数据问题,日志等

2.肯定有个数据库api用于连接数据库(connectors)

3.连接到数据库肯定需要到线程池获取线程(connection poll)

4.获取线程后,会将sql传输到内部sql接口(sql interface),如果命中了缓存(cashes & buffers),那么就不执行以下步骤直接从缓存返回数据

5.接收到sql之后做解析,即做条件处理,舍弃1=1等条件(parser)

6.解析完成后就转到优化环节,调整sql以选择合适的方式(optimizer)

7.之后就是调用存储引擎做处理。并返回结果

永久链接

已回答 2016-02-19 10:33:16

jkant's gravatar image

jkant ♦♦
11131137138
采纳率: 3%

你的回答
切换预览

关注这个问题

邮件:

登录之后,你可以在这里订阅任何更新。

RSS:

回答

回答和评论

Markdown基本语法

  • *italic* or _italic_
  • **bold** or __bold__
  • 链接:[文本](http://url.com/ "标题")
  • 图片?![alt 文本](/path/img.jpg "标题")
  • 编号列表: 1. Foo 2. Bar
  • 如果想要换行,只需要在前一行结尾处插入2个空格即可。
  • 支持基本HTML标记

问题标签:

×72
×1
×1
×1

已提出的问题: 2016-02-18 11:14:31

问题浏览量: 786 次

最后更新: 2016-02-19 10:33:16