MySQl Server的源码可以直接去Github浏览。

这里我们选择5.7版本的:https://github.com/mysql/mysql-server/tree/5.7

也可以通过:

git clone https://github.com/mysql/mysql-server.git

下载下来。

源码根目录中主要目录和文件的作用:

  • BUILD:里面包含各个平台,各个编译器下进行编译的脚本;
  • CMakeLists.txt:CMake入口编译文件;
  • client:客户端工具,所有客户端工具都在这里,比如mysql,mysqlbinlog,mysqladmin,mysqldump等;
  • cmake:为CMake编译服务的,这里定义了很多在CMake编译时使用的方法或变量;
  • cmd-line-utils:一些小工具;
  • config.h.cmake:用于生成编译时配置头文件的.cmake文件;
  • dbug:提供一些调试用的宏定义,可以很好地跟踪数据库执行到的执行函数、运行栈桢等信息,可以定位一些问题;
  • extra:包含了用来做网络消息认证的SSL包,并提供了comp_err、resolveip等小工具;
  • include:MySQL代码包含的所有头文件,这里不包括存储引擎的头文件;
  • libbinlogevents:MySQL 5.7 引擎开始新增的、用于解析Binlog的lib服务;
  • libmysql:用来创建嵌入式系统的MySQL客户端API;
  • libmysqld:MySQL服务器的核心级API文件,也用来开发嵌入式系统;
  • mysql-test:mysqld的测试工具;
  • mysys:MySQL自己实现的一些常用的数据结构和算法,比如array,list和hash,以及一些区分不同底层操作系统平台的函数封装,比如my_file,my_fopen等函数,这一类型的函数都以my开头;
  • mysys_ssl:MySQL中SSL相关的服务;
  • plugin:包括一些系统内置的插件,比如auth,password_validation等,同时包含了可动态载入的插件,比如fulltext,semisync等;
  • regex:一些关于正则表达式的算法实现;
  • scripts:包含一些系统工具脚本,比如mysql_install_db,mysqld_safe及mysqld_multi等;
  • sql:MySQL服务器主要代码,这里包含了main函数(main.cc),将会生成mysqld可执行文件;
  • sql-common:存放部分服务器端和客户端都会用到的代码;
  • storage:所有存储引擎的源代码都在这个目录中,文件夹名一般就是其存储引擎的名称,包括innobase,myisam,blackhole,ndb及perfschema等;
  • strings:包含很多字符串处理的函数,比如strmov,strappend及my_atof等函数;
  • support-files:my.cnf示例配置文件及编译所需的一些工具;
  • unittest:单元测试文件目录;
  • vio:虚拟网络IO处理系统,是对不同平台或不同协议的网络通信API的封装;
  • win:在windows平台编译所需的文件和一些说明;
  • zlib:zlib压缩算法库;
  • zifeiy:大晚上的我讲一个笑话给你听,就是没有zifeiy这个文件夹,我多加了一行逗大家乐一下然后就去睡觉了,晚安~

MySQL 5.7 源码中的目录结构的更多相关文章

  1. MySQL源码分析以及目录结构 2

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  2. MySQL源码分析以及目录结构

    原文地址:MySQL源码分析以及目录结构作者:jacky民工 主要模块及数据流经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改.本文将对MySQL的整体架构及重要目录进行讲述. 源码结 ...

  3. mysql 函数在源码中的定义

    大牛那海蓝蓝 MySQL提供了较为丰富的SQL语句,用以支持MySQL提供的主要功能.在数据库内部,MySQL又是怎么知道自己能够处理哪些对象.处理哪些事情的? 如果我们输入一条SQL语句,MySQL ...

  4. (3.1)mysql基础深入——mysql二进制与源码目录结构介绍

    (3.1)mysql基础深入——mysql二进制与源码目录结构介绍 关键字:二进制目录结构,源码目录结构(编译安装目录结构) 1.二进制安装程序目录结构 [1] BIN -- mysql的可执行文件( ...

  5. Linux 中mysql安装(源码安装方式)

    本文是介绍以源码安装的方式编译和安装Mysql 5.6(可以指定安装路径),也可以不采用源码安装方式,直接用安装包的方式. 源码安装方式慎用,容易报错. 1.卸载旧版本 rpm -qa | grep ...

  6. linux下MySQL 5.6源码安装

    linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...

  7. Eclipse与Android源码中ProGuard工具的使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的 ...

  8. 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见

    智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...

  9. wemall app商城源码中android按钮的三种响应事件

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码中android按 ...

随机推荐

  1. python 'NoneType' object has no attribute 'get'

    获取 页面链接的时候报错 'NoneType' object has no attribute 'get' href = div.find("a").get("href& ...

  2. Java中ClassLoader浅析.

    一.问题 请在Eclipse中新建如下类,并运行它: 1 package java.lang; 2 3 public class Long { 4 public static void main(St ...

  3. Linux下安装nginx实现伪分布

    1.安装 Nginx 的编译环境 gcc yum install gcc-c++ 2.nginx 的 http 模块使用 pcre 解析正则表达式,所以安装 perl 兼容的正则表达式库 yum in ...

  4. PHP安装与配置

    一.官网下载 进入PHP下载地址http://windows.php.net/download下载最新线程安全版(Thread Safe)PHP zip压缩包,解压缩后放在想要安装的路径下.我这里下载 ...

  5. 数据结构实验之图论七:驴友计划【迪杰斯特拉算法】(SDUT 3363)

    分析:可以求简单的任意两点间最短距离的稍微变形,一个板子题.  #include <iostream> #include <bits/stdc++.h> using names ...

  6. vue中封装一个倒计时

    <template> <div class="countDownBox"> <div class="row resetStyle" ...

  7. 使用AwesomeWM作为Mate(Gnome相同) Desktop的窗口管理器

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/using_awesomewm_as_wm_of_mate_des ...

  8. VM 虚拟机 CentOS 7 设置 桥接网络

    桥接网络的设置:   安装时设置网络为桥接网络!   找到 ip 地址,设置如下   注意ip地址并不是一样的,用以区分   然后在关闭 windows 防火墙,打开 cmd 使用 ping 命令 O ...

  9. meshing-缺角正方体

    原视频下载地址:https://yunpan.cn/cqLyi92H5Akh5  访问密码 1d48

  10. 《Glibc内存管理》笔记DAY4

    目录 分箱式内存管理 Small bins Large bins 内容来源 分箱式内存管理   对于空闲的 chunk,ptmalloc 采用分箱式内存管理方式,根据空闲 chunk 的大小和处于的状 ...