📷 题解插图High Performance MySQL 翻译 第一章 MySQL架构和历史 - 逻辑架构
《High Performance MySQL》是OneCoder正在阅读的书,利用茶余饭后时间进行的阅读和翻译,日积月累。
MySQL与其他数据库服务有很大的不同,它的架构特性使得它在广泛领域内成为一种实用而“廉价”的选择。MySQL并不是完美的,但是他足够灵活以适应特定的需求环境,如网络应用。同时,MySQL也可以支持嵌入式应用,数据仓库,内容索引和软件分发,高可用系统,联机事务处理等等。
为了充分的利用MySQL,你需要理解其设计,从而利用而不是抗拒它。MySQL在很多方面是灵活的。例如,它支持的硬件范围很广,你可以在各种硬件环境下配置和运行它,并且,它支持多种数据类型。然而,MySQL最不寻常和重要的特性是它的存储引擎,它在设计上将查询进程和其他服务任务与数据存储和检索分离。这种分离的特性让你可以据需选择数据的存储方式以及想要怎样的性能,特性和其他特征。
本章概要介绍MySQL的架构,存储引擎的主要区别及其重要性。最后将介绍一些历史背景和基准数据。我们视图通过简化细节和展示样例的方式介绍了MySQL。这个讨论对于数据库新手和其他数据库的专家都非常有帮助。
MySQL 逻辑架构
一个好的展现MySQL各个组件如何协同工作的图会帮助你更好的理解MySQL。下图展示了MySQL的逻辑架构。

最上层是业务层,不局限于MySQL。他们大多是基于网络的客服端/服务端工具或者服务,需要进行连接管理,权限认证,安全等等。
第二层开始变得“有趣”。MySQL大部分的“大脑”都在这层,包括查询解析代码,分析,优化,缓存以及所有内嵌函数(如,dates, times, math 和 encryption)。提供的所有访问存储引擎的函数都在该层,例如:存储过程, 触发器和视图。
第三层包括存储引擎。他们负责存储和检索存储在MySQL中的所有数据。就跟GNU/Linue的各种可用的文件系统一样,不同存储引擎也有其优缺点。服务端通过存储引擎接口(API)与其通信。该API屏蔽了不同存储引擎的区别,使他们对查询层是透明的。该API包含了大量的底层函数,执行诸如"开始一个事务"或者"查询包含该主键的行"等操作。存储引擎不解析SQL(注1)或者与彼此通信;他们只负责响应来自服务端的请求。
注1:一个例外是在InnoDB引擎解析外键定义,因为MySQL服务本身并没有实现该功能。 {: .prompt-info }
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
《High Performance MySQL》翻译(2) 连接管理和安全 优化和执行
<p 接上篇,第一章 MySQL架构和历史</p <p <strong连接管理和安全</strong</p <p <br / 每个客户连接在服务内部都有一个独立的线程处理。查询在这个单独的线程内运行,线程轮流在CPU或核心上运行。线程在服务端被缓存,所以不必针对每个新来线程进行创建和销毁。(注2)。<br / 当客户端...
《High Performance MySQL》翻译(3) 第一章 并发控制
<p <br / <strong并发控制</strong</p <p 任何时刻当不止一个请求想要同时修改数据时候就产生了并发控制问题。从本章我们的观点来看,MySQL需要在两层关注这个问题:服务层和存储引擎层。并发控制是一个大话题,有很多相关的理论文献发表。所以,我们仅简介一下MySQL处理并发读写的方式。你将在本章的...
《High Performance MySQL》概译 读/写锁
<p 今天在微博看到消息该书的中文版已经翻译完成即将发售,所以OneCoder不再进行全文翻译,只会以类似读书笔记的方式记录文章大意和自己的理解。每天阅读的不会太多,因为只是休息的时候阅读,学习的重心最近在Hadoop上。</p <p <strong读写锁</strong</p <br / <p 多个用户同时读取邮件的...
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com