参考文章
源码下载:http://jingyan.baidu.com/article/60ccbceb5ff43f64cbb19760.html
理解MySql–索引与优化:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html
目录文件结构
1、BUILD:编译、安装脚本目录,绝大部分以compile-开头,其中的SETUP.sh脚本为C和C++编译器设置了优化选项。
2、client:包括常用命令和客户端工具代码,这些源代码文件中包括密码确认功能get_password.c、SSL连接可行性检查、MySQL客户端mysql.cc、mysqladmin工具和mysqladmin用于服务器的运作mysqladmin.c、显示数据库及其表和列的mysqlshow.c等。
3、cmd-line-utils:命令行工具。
4、dbug:使用with-debug参数编译的MySQL会显示dbug输出,提供一些调试用的宏定义。
5、extra:一些相对独立的次要的工具。
6、mysys:代表MySQL system library,是MySQL的库函数文件,共125个.c文件,随着版本的演化和新功能的加入,库函数也在不断的增大。其中包括用于快速排序的mf_qsort.c、用于临时文件管理的mf_tempfile.c、定义在客户端编译时采用字符集类型的charset-def.c、字符集相关操作(字符集加载、初始化等)的charset.c;包括文件打开、数据读写、内存分配、OS/2系统特别优化、线程控制、权限控制、RaidTable、动态字符串处理、队列算法、网络传输协议、初始化函数、错误处理、平衡二叉树算法、符号连接处理、唯一临时文件名生成、hash函数、排序算法、压缩传输协议等。
7、regex:regex为MySQL提供执行正则匹配函数REGEXP时的支持。
8、storage:MySQL的各类存储引擎代码都在该目录中,包括CVS存储引擎(cvs目录)、InnoDB存储引擎、Federate等。
myisam和myisammrg目录包括了MyISAM存储引擎的代码,myisammrg目录的文件是对merge表支持,myisam是MyISAM存储引擎的主要目录,其中包括IO操作、磁盘文件处理、行处理、索引处理。
9、sql:除了包含mysqld.cc这一MySQL main函数所在的文件外,还包括了各类SQL语句的解析/实现、线程、查询解析与查询优化器、存储引擎接口。在storage下各存储引擎目录中,存在的是各类存储引擎的实现代码,而在sql/目录下存放的是处理接口handler。handler类中存在很多虚函数,需要其子类进行实现。在MySQL 5.1中,综合文件hadler.cc和handler.h处理了所有不同种类存储请求。各种SQL语句的执行代码也可以在sql目录中找到,这类文件常以sql开始对文件命名。MySQL将UNION和ROLLUP等操作看作内部函数。
10、vio:VIO意指Virtual I/O,主要用来处理各种网络协议的IO。Virtual I/O使得各种模块的网络协议能够无缝的调用I/O功能。MySQL网络子系统将调用这里的方法。
11、win:在windows下编译所需的文件和一些说明。
12、zlib:zlib算法库。