MySQL学习 -2- MySQL架构

架构和原理

架构图

网络连接层

客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流 的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立 连接。

服务层

服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优
化器和缓存六个部分。
1. 连接池(Connection Pool):负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。
系统管理和控制工具(Management Services & Utilities):例如备份恢复、安全管理、集群管理等

  1. SQL接口(SQL Interface):用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML、DDL、存储过程、视图、触发器等。
  2. 解析器(Parser):负责将请求的SQL解析生成一个”解析树”。然后根据一些MySQL规则进一步检查解析树是否合法。
  3. 查询优化器(Optimizer):当“解析树”通过解析器语法检查后,将交由优化器将其转化成执行计
    划,然后与存储引擎交互。
  4. 缓存(Cache&Buffer): 缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

存储引擎层

该层负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件,数据文件,配置文件,pid 文件,socket 文件等。

目前MySQL主要的存储引擎:

  • InnoDB
    1.支持行锁
    2.支持事务
    3.支持外键
    4.支持类似Oracle的非锁定读
    5.在MySQL5.5.8开始是MySQL默认的存储引擎
  • MyISAM
    1.不支持事务
    2.表锁设计,不支持行锁
    3.支持全文索引
    4.缓冲池只缓存索引文件,而不缓存数据文件
    5.在MySQL5.5.8之前是MySQL默认的存储引擎(除Windows版本外)
  • Memory
    1.将表中的数据存放在内存中,如果数据库重启或者发生崩溃,表中的数据将消失
    2.非常适合用于临时表(MySQL也确实将其临时表采用了Memory)
    3.默认使用哈希索引,而不是B+树索引
    4.MySQL数据库使用Memory存储引擎作为临时表存放查询的中间结果集。如果结果集太大,或者有Text或者BLOB类型的字段。则MySQL数据库会将其转换到MyISAM存储引擎表二存放到磁盘当中。因此这时产生临时表的性能对查询会有性能损失。
  • 其他引擎
    1.Maria , 开发者是MySQL创始人之一 Michael Widenius,目标是取代MyISAM
    2.Archive
    3.Federated
    4.Merge
    5.CSV
    ……
  • 不同引擎之间的比较

系统文件层

存储引擎负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异 。现在有很多种存储引擎,各有各的特点,最常见的是MyISAM和InnoDB。


参考引用:

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇