大型系统的架设有一个我们都知道的原则: 模块化, 这个MySQL源码里面可以清晰的看到.
MySQL里面有几个重要的模块:
1. MySQL内核模块:
源码文件夹: mysys
作用: 主要提供了MySQL的网络API, 加密API, 线程/进程API, 以及锁定和内存管理API, 排序API, 压缩解压API, 存储分页API等等
2. SQL模块:
源码文件夹: sql
作用: 这个好说: sql的解析,存储,以及一些所需的API.
3. Storage存储引擎模块:
源码文件夹: storage.
作用: MySQL的各种存储引擎源码全部在这里: 典型的myisam和innodb引擎源码分别在: storage/mysiam和storage/innobase下...
4. 字符串模块:
源码文件夹: strings
作用: 很多的高效字符串API改写都在这个源码包里面. 例如: 字符串的查找, string和int的相互转换等等
5. 正则模块:
源码文件夹: regex.
作用: 正则的解析和执行API.
6. zlib压缩模块:
源码文件夹: zlib
典型的zlib模块.
另外还有很多其他的非核心模块: 例如: cmd客户端(cmd-line-utils), 配置解析(config), 文档(Docs), 接口头文件(include), 测试(tests), 单元测试(unittest), 基本客户端工具(client)......
阅读如何入手呢?
看你重点想了解那部分功能了: 例如想了解MySQL的索引, 就可以看看存储引擎.
想知道sql的解析就可以看看sql模块. 想知道网络处理(nio,线程池...)就可以看看mysys模块.
有一个不错的方式就是: 自己去编译安装下mysql, 并且依据里面的测试例子, 来自己动手调用mysql的API, 然后依据函数调用关系你就可以知道一次mysql请求到底是调用了哪些模块来完成的了. 只要知道了执行的顺序, 就好看源码了... (crud区分下)
只要努力,高不是问题。
谢谢!
mysql的代码混乱那是世人皆知,楼主看这完全是扯淡。
最最推荐的是看nginx,没有之一。
大型系统的架设有一个我们都知道的原则: 模块化, 这个MySQL源码里面可以清晰的看到.
MySQL里面有几个重要的模块:
1. MySQL内核模块:
源码文件夹: mysys
作用: 主要提供了MySQL的网络API, 加密API, 线程/进程API, 以及锁定和内存管理API, 排序API, 压缩解压API, 存储分页API等等
2. SQL模块:
源码文件夹: sql
作用: 这个好说: sql的解析,存储,以及一些所需的API.
3. Storage存储引擎模块:
源码文件夹: storage.
作用: MySQL的各种存储引擎源码全部在这里: 典型的myisam和innodb引擎源码分别在: storage/mysiam和storage/innobase下...
4. 字符串模块:
源码文件夹: strings
作用: 很多的高效字符串API改写都在这个源码包里面. 例如: 字符串的查找, string和int的相互转换等等
5. 正则模块:
源码文件夹: regex.
作用: 正则的解析和执行API.
6. zlib压缩模块:
源码文件夹: zlib
典型的zlib模块.
另外还有很多其他的非核心模块: 例如: cmd客户端(cmd-line-utils), 配置解析(config), 文档(Docs), 接口头文件(include), 测试(tests), 单元测试(unittest), 基本客户端工具(client)......
阅读如何入手呢?
看你重点想了解那部分功能了: 例如想了解MySQL的索引, 就可以看看存储引擎.
想知道sql的解析就可以看看sql模块. 想知道网络处理(nio,线程池...)就可以看看mysys模块.
有一个不错的方式就是: 自己去编译安装下mysql, 并且依据里面的测试例子, 来自己动手调用mysql的API, 然后依据函数调用关系你就可以知道一次mysql请求到底是调用了哪些模块来完成的了. 只要知道了执行的顺序, 就好看源码了... (crud区分下)
只要努力,高不是问题。
谢谢!
mysql的代码混乱那是世人皆知,楼主看这完全是扯淡。
最最推荐的是看nginx,没有之一。
引用来自“狮子的魂”的答案
大型系统的架设有一个我们都知道的原则: 模块化, 这个MySQL源码里面可以清晰的看到.
MySQL里面有几个重要的模块:
1. MySQL内核模块:
源码文件夹: mysys
作用: 主要提供了MySQL的网络API, 加密API, 线程/进程API, 以及锁定和内存管理API, 排序API, 压缩解压API, 存储分页API等等
2. SQL模块:
源码文件夹: sql
作用: 这个好说: sql的解析,存储,以及一些所需的API.
3. Storage存储引擎模块:
源码文件夹: storage.
作用: MySQL的各种存储引擎源码全部在这里: 典型的myisam和innodb引擎源码分别在: storage/mysiam和storage/innobase下...
4. 字符串模块:
源码文件夹: strings
作用: 很多的高效字符串API改写都在这个源码包里面. 例如: 字符串的查找, string和int的相互转换等等
5. 正则模块:
源码文件夹: regex.
作用: 正则的解析和执行API.
6. zlib压缩模块:
源码文件夹: zlib
典型的zlib模块.
另外还有很多其他的非核心模块: 例如: cmd客户端(cmd-line-utils), 配置解析(config), 文档(Docs), 接口头文件(include), 测试(tests), 单元测试(unittest), 基本客户端工具(client)......
阅读如何入手呢?
看你重点想了解那部分功能了: 例如想了解MySQL的索引, 就可以看看存储引擎.
想知道sql的解析就可以看看sql模块. 想知道网络处理(nio,线程池...)就可以看看mysys模块.
有一个不错的方式就是: 自己去编译安装下mysql, 并且依据里面的测试例子, 来自己动手调用mysql的API, 然后依据函数调用关系你就可以知道一次mysql请求到底是调用了哪些模块来完成的了. 只要知道了执行的顺序, 就好看源码了... (crud区分下)