![阿里云数字新基建系列:云数据库架构](https://wfqqreader-1252317822.image.myqcloud.com/cover/967/43737967/b_43737967.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1 RDS for MySQL
MySQL的内核框架,在经典数据库抽象模型上基本改动不大,但由于历史原因,MySQL被迫拆分成上下两层,即服务层(Server Layer)和InnoDB存储引擎层(Storage Engine Layer)。在很多MySQL图书或资料里,对相关历史原因都有介绍,这里就不做介绍了。最终,支持事务(Transaction)的InnoDB存储引擎成为MySQL的绝对主力引擎。
RDS for MySQL主要使用的是AliSQL内核,根据云上业务和我们的实践经验,对很多MySQL行为做了优化和调整。但对总的结构没有做大的调整,基本如图1-2所示。
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-18-1.jpg?sign=1739282294-AQP66SLUXBAJl21n0BgUHn99ZlLhInMG-0-7069c9d1390061b1548e2fb62e5d2abd)
图1-2 MySQL的内核结构
可能有很多词,比如Mini-Transaction(MTR),读者是第一次遇到。有数据库基础的读者都知道事务的相关原理,事务的相关实现则需要底层MTR来支持。为了方便读者理解MySQL的内核结构,我们以一条SQL请求为例,展示SQL语句在MySQL内的执行全过程。首先从MySQL服务层讲起。
说明
想了解MySQL服务层,则不可避免地要找到一个合适的入口函数,因为MySQL的代码跳跃性很强,不经意间,就容易跑偏。要找到合适的入口函数,有以下几种方式。
(1)打开MySQL Profiling,会显示各主要阶段的代码文件和行数。
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-19-1.jpg?sign=1739282294-koLtOJ1pgJ7gLgBbjpdWdhNlX4Emvojw-0-b317a62989a9eb35e553f131874bbc7f)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-20-1.jpg?sign=1739282294-RX046Riyois1U3jzac8NUSqysrRMoSJT-0-caeb9694b2bc3775c4d2ead4b909dc2b)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-21-1.jpg?sign=1739282294-XYT3G7ixEHo7bvhIt0zcrjfwpOfsetd2-0-c0aff57516996e372f383dad4d970ae2)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-22-1.jpg?sign=1739282294-zD0MZUsrxTvKBsGI9DmbKuv7LJ3YVylZ-0-8f54628c10015783ac6da35bd2e2f159)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-23-1.jpg?sign=1739282294-i4MhKn5U9uNH2wV9hAOEpasfhwHhZWNn-0-0baf7e87ef89c2d955519f158b932676)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-24-1.jpg?sign=1739282294-oXOB0o8QGSGJrl72Xe13zLRn56DcV2ig-0-fec849913652dfec5b46080f2d2fa45d)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-25-1.jpg?sign=1739282294-BlNFZdCEFjs54pSqtHlzt5EZQxUIVyFb-0-26b536f540610f30c50a24476864272f)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-26-1.jpg?sign=1739282294-0gJPEhQ4JnQ2Z46nmtAziRJEmwNo8k6C-0-c42c188f05a920be142c2e779e2bb925)
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-27-1.jpg?sign=1739282294-5BhJaxV3EgvEIKGWQbu5Lv97PAEfqeDI-0-f9447e8679c4e166762c37e09f6ebe39)
(2)使用调试工具,打断点,也会显示相对应的函数。
![](https://epubservercos.yuewen.com/2DE8B5/23020636209728806/epubprivate/OEBPS/Images/42119-00-27-2.jpg?sign=1739282294-eRxsXdy7LgmNesTY8fmhIsKPmYsC4lui-0-efb2647a4d5d47a2826673db8e44bbcb)
(3)使用常用的入口函数,比如dispatch_command。