MySQL源码分析及核心内幕之1 -- 源码目录结构

        一直以来都在使用MySQL来做数据库开发,但是MySQL底层是如何实现大数据量的存储对我来说一直是个未知数,并且现在很多公司都会使用MySQL来作为后端数据存储工具,其简单强大的特点深受广大公司青睐。现在在公司开始接触性能优化方面的任务,由于MySQL数据量已经很庞大,单表数据量已达数千万,有些甚至是亿级的数据量,这样给查询带来了很大的挑战,经常有502的问题出现,数据库查询压力不断上升,甚至最近发现偶尔会有数据丢失的现象,这激起了我研究MySQL源码及其底层实现的兴趣,所以打算花一段时间来好好研究。到底MySQL是如何工作的呢,由于自己能力及时间精力有限,研究得不一定对,欢迎大家吐槽。

       本次研究的MySQL的源码版本为mysql-5.5.22.tar.gz,因为之前安装过该版本,所以就使用其来研究。

       其源码目录结构如下:

[xxx@localhost mysql-5.5.22]$ ls
BUILD           configure.cmake  INSTALL-WIN-SOURCE  mysql-test  sql            unittest
BUILD-CMAKE     COPYING          libmysql            mysys       sql-bench      VERSION
client          dbug             libmysqld           packaging   sql-common     vio
cmake           Docs             libservices         plugin      storage        win
CMakeLists.txt  extra            man                 README      strings        zlib
cmd-line-utils  include          mycnf               regex       support-files
config.h.cmake  INSTALL-SOURCE   mysql_start.sh      scripts     tests

     源码目录结构说明(版本不一样目录结构可能也不太一样):

  1. BUILD:编译和安装脚本目录,编译配置并为所有被支持的平台制作文件,内含在各个平台、各种编译器下进行编译和链接的脚本。
  2. client:客户端工具,内含mysql,mysqladmin,mysqlshow等常用命令和客户端工具的源代码。
  3. storage存储引擎目录,各类存储引擎代码都在这个目录中。
  4. mysysmysys代表 MySQL system library,MySQL的库函数文件。
  5. sql mysql主要代码,将会生成 mysqld文件。
  6. vio :  V irtual I/O系统 ,是对 network io的封装,主要用来处理各种网络协议的IO。
  7. stringsstring库,各种字符串处理操作函数。
  8. include包含的头文件
  9. packaging打包工具包。
  10. support-filesmy.cnf示例配置文件,安装完MySQL后,一般MySQL的启动文件也会放到该目录下。
  11. plugin mysql以插件形式实现的部分工程。
  12. tests测试文件所在目录,包含测试文件和测试目录。
  13. libmysql库文件,将生产libmysqlclient.so。
  14. README:说明文档。
  15. unittest:单元测试。
  16. regex正则表达式工具  。
  17. VERSION:版本信息
  18. dbug:提供一些调试用的宏定义。
  19. libservices:5.5.x中新加的目录,实现了打印功能。
  20. scripts提供脚本工具,如 mysql_install_db等。
  21. Docs文档库。
  22. extra:提供 innochecksum,resolveip等额外的小工具。
  23. sql-bench:一些测评代码。
  24. winwindows平台提供的编译环境。
  25. cmd-line-utilsreadline,libedit工具。
  26. man手册页。
  27. sql-common存放部分服务器端和客户端都会用到的代码。
  28. zlibzip库工具。
  29. mysql-test mysqld的测试工具箱。

       其中,比较核心的代码存储在前面8个目录下。

 

 

 

 

 

你可能感兴趣的:(MySQL技术)