PostgreSQL与MySQL源代码分析之旅(2)下--MySQL源代码结构
MySQL的源代码目录与PG相比更加的扁平化,从根目录到文件大多数都是3、4级,而且文件名也极尽简化,这种简练对于开发还是有一定的好处的,最起码文件的访问路径不会太长,从这里MySQL的实用主义哲学可见一斑;不好的地方就是核心代码、工具、接口、测试代码都在同级目录下展开,有代码洁癖的可能不一定喜欢。
mysql-5.58
├─BUILD :在各个平台上的编译脚本
├─client :客户端工具
├─cmake :cmak编译脚本
├─cmd-line-utils :readline等工具
├─dbug :调试用的宏定义
├─Docs :帮助文档代码
├─extra :提供innochecksum,resolveip等额外的小工具
├─include :头文件
├─libmysql :库文件,生产libmysqlclient.so
├─libmysqld :
├─libservices :5.5.x中新加的目录,实现了打印功能
├─man :手册
├─mysql-test :测试工具
├─mysys :内部使用的数据结构和算法
├─packaging :打包工具
├─plugin :插件形式的部分功能
├─regex :正则式实现
├─scripts :提供脚本工具
├─sql : mysql核心代码,将会生成mysqld文件
├─sql-bench :基准测试工具代码
├─sql-common :服务器端和客户端都会用到的代码
├─storage :插件式的存储引擎
│ ├─archive
│ ├─blackhole
│ ├─csv
│ ├─example
│ ├─federated
│ ├─heap
│ ├─innobase :大名鼎鼎的inodb引擎
│ ├─myisam :同样有名的自带引擎
│ │ └─ftbench
│ ├─myisammrg
│ ├─ndb
├─strings :string 库
├─support-files
│ ├─dtrace
│ ├─MacOSX
│ └─RHEL4-SElinux
├─tests :测试文件
├─unittest :单元测试
├─vio
├─win :windows平台提供的编译环境
└─zlib :zlib库