文档介绍:主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改。本文将对MySQL的整体架构及重要目录进行讲述。源码结构(MySQL--m2)BUILD:内含在各个平台、各种编译器下进行编译的脚本。如compile-pentium-debug表示在pentium架构上进行编译的脚本。Client:客户端工具,如mysql,mysqladmin之类。Cmd-line-utils:readline,libedit工具。Config:给aclocal使用的配置文件。Dbug:提供一些调试用的宏定义。Extra:提供innochecksum,resolveip等额外的小工具。Include:包含的头文件Libmysql:库文件,。Libmysql_r:线程安全的库文件,。Libservices:,实现了打印功能。Man:手册页。Mysql-test:mysqld的测试工具一套。Mysys:为跨平台计,MySQL自己实现了一套常用的数据结构和算法,如string,ware:在netware平台上进行编译时需要的工具和库。Plugin:mysql以插件形式实现的部分功能。Pstack:异步栈追踪工具。Regex:正则表达式工具。Scripts:提供脚本工具,如mysql_install_db等Sql:mysql主要代码,将会生成mysqld文件。Sql-bench:一些评测代码。mon:存放部分服务器端和客户端都会用到的代码。Storage:存储引擎所在目录,如myisam,innodb,ndb等。Strings:string库。Support-files:f示例配置文件。Tests:测试文件所在目录。Unittest:单元测试。Vio:virtualio系统,workio的封装。Win:给windows平台提供的编译环境。Zip:zip库工具二主要数据结构THD线程描述符(sql/)包含处理用户请求时需要的相关数据,每个连接会有一个线程来处理,在一些高层函数中,net;//客户连接描述符Protocol*protocol;//当前的协议Protocol_textprotocol_text;//普通协议Protocol_binaryprotocol_binary;//二进制协议HASHuser_vars;//用户变量的hash值Stringpacket;//网络IO时所用的缓存Stringconvert_buffer;//字符集转换所用的缓存structsockaddr_inremote;//客户端socket地址THR_LOCK_INFOlock_info;//当前线程的锁信息THR_LOCK_OWNERmain_lock_id;//在旧版的查询中使用THR_LOCK_OWNER*lock_id;//若非main_lock_id,指向游标的lock_idpthread_mutex_tLOCK_thd_data;//thd的mutex锁,保护THD数据(thd->query,thd->query_length)不会被其余线程访问到。Statement_mapstmt_map;//preparedstatement