这篇文章主要介绍了MySQL源代码目录有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、源代码目录介绍:
1、BUILD
BUILD目录是编译、安装脚本目录,绝大部分以compile-开头,其中的SETUP.sh脚本为C和C++编译器设置了优化选项。
2、client
client目录包括常用命令和客户端工具代码,这些源代码文件中包括密码确认功能get_password.c、SSL连接可行性检查、MySQL客户端mysql.cc、mysqladmin工具和mysqladmin用于服务器的运作mysqladmin.c、显示数据库及其表和列的mysqlshow.c等。
3、storage
MySQL的各类存储引擎代码都在该目录中,包括CVS存储引擎(cvs目录)、InnoDB存储引擎、Federate等。存储引擎是数据库系统的核心,封装了数据库文件的操作,是数据库系统是否强大最重要的因素。Mysql实现了一个抽象接口层,叫做 handler(sql/handler.h),其中定义了接口函数,比如:ha_open, ha_index_end, ha_create等等,存储引擎需要实现这些接口才能被系统使用。这个接口定义超级复杂,有900多行 :-(,不过我们暂时知道它是干什么的就好了,没必要深究每行代码。对于具体每种引擎的特点,我推荐大家去看mysql的在线文档:
http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html
应该能看到如下的目录:
* innobase, innodb的目录,当前最流行的存储引擎
* myisam, 最早的Mysql存储引擎,一直到innodb出现以前,使用最广的引擎
* heap, 基于内存的存储引擎
* federated, 一个比较新的存储引擎
* example, csv,这几个大家可以作为自己写存储引擎时的参考实现,比较容易读懂
4、mysys
mysys代表MySQL system
library,是MySQL的库函数文件。库函数是一些预先编译好的函数的集合,这些函数都是按照可再使用的原则编写的。它们通常由一组互相关联的用来完成某项常见的工作的函数构成,从本质上来说库是一种可执行的二进制形式,可以被操作系统载入内存执行。在mysys目录中,共有125个.c文件,且随着版本的演化和新功能的加入,库函数也在不断的增大。
其中包括用于快速排序的mf_qsort.c、用于临时文件管理的mf_tempfile.c、定义在客户端编译时采用字符集类型的charset-def.c、字符集相关操作(字符集加载、初始化等)的charset.c。
mysys是一个大杂烩,包含了各种各样的功能库文件,包括文件打开、数据读写、内存分配、OS/2系统特别优化、线程控制、权限控制、RaidTable、动态字符串处理、队列算法、网络传输协议、初始化函数、错误处理、平衡二叉树算法、符号连接处理、唯一临时文件名生成、hash函数、排序算法、压缩传输协议等。
5、sql
sql目录出了包含mysqld.cc这一MySQL main函数(没错,这里就是数据库主程序mysqld所在的地方,大部分的系统流程都发生在这里。)所在的文件外,还包括了各类SQL语句的解析/实现、线程、查询解析与查询优化器、存储引擎接口(你还能看到sql_insert.cc,
sql_update.cc,sql_select.cc,等等,分别实现了对应的SQL命令。后面我们还要经常提到这个目录下的文件)。在storage下各存储引擎目录中,存在的是各类存储引擎的实现代码,而在sql/目录下存放的是处理接口handler。handler类中存在很多虚函数,需要其子类进行实现
如今在MySQL 5.1中,综合文件hadler.cc和handler.h处理了所有不同种类存储请求。各种SQL语句的执行代码也可以在sql目录中找到,这类文件常以sql开始对文件命名。MySQL将UNION和ROLLUP等操作看作内部函数。
大概有如下及部分:
SQL解析器代码: sql_lex.cc,
sql_yacc.yy, sql_yacc.cc, sql_parse.cc等,实现了对SQL语句的解析操作。
“handler”代码: handle.cc,
handler.h,定义了存储引擎的接口。
“item”代码:item_func.cc,
item_create.cc,定义了SQL解析后的各个部分。
SQL语句执行代码: sql_update.cc,
sql_insert.cc sql_select.cc, sql_show.cc, sql_load.cc,执行SQL对应的语句。当你要看”SELECT …”的执行的时候,直接到sql_select.cc去看就OK了。
辅助代码: net_serv.cc实现网络操作
还有其他很多代码。
6、vio
VIO意指Virtual I/O,主要用来处理各种网络协议的IO。Virtual I/O使得各种模块的网络协议能够无缝的调用I/O功能。MySQ免费主机域名L网络子系统将调用这里的方法。
7、regex
regex为MySQL提供执行正则匹配函数REGEXP时的支持。
8、dbug
使用with-debug参数编译的MySQL会显示dbug输出,代码中的所有.c和.cc文件均可调用这个库。2、安装目录介绍:
On Windows, the
default installation directory isC:mysql, which has the
following subdirectories:DirectoryContents of DirectorybinClient programs and themysqldserverdataLog files, databasesDocsDocumentationexamplesExample programs and scriptsincludeInclude (header) fileslibLibrariesscriptsUtility scriptsshareError message files
Installations
created from Linux RPM distributions result in files under the following system
directories:DirectoryContents of Directory/usr/binClient programs and scripts/usr/sbinThemysqldserver/var/lib/mysqlLog files, databases/usr/share/doc/packagesDocumentationinclude/usr/include/mysqlInclude (header) fileslib/usr/lib/mysqlLibraries/usr/share/mysqlError message and character set filessql-bench/usr/share/sql-benchBenchmarks
On Unix, atarfile binary distribution is installed by unpacking it at the
installation location you choose (typically/usr/local/mysql) and creates the
following directories in that location:DirectoryContents of DirectorybinClient programs and themysqldserverdataLog files, databasesdocsDocumentation, ChangeLogincludeInclude (header) fileslibLibrariesscriptsmysql_install_dbshare/mysqlError message filessql-benchBenchmarks
A source
distribution is installed after you configure and compile it. By default, the
ins免费主机域名tallation step installs files under/usr/local, in the following
subdirectories:DirectoryContents of DirectorybinClient programs and scriptsinclude/mysqlInclude (header) filesinfoDocumentation in Info formatlib/mysqlLibrarieslibexecThemysqldservershare/mysqlError message filessql-benchBenchmarks andcrash-metestvarDatabases and log files感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL源代码目录有哪些”这篇文章对大家有帮助,同时也希望大家多多支持云技术,关注云技术行业资讯频道,更多相关知识等着你来学习!
相关推荐: Centos7怎么用rpm方式安装mysql-5.5
这篇文章主要讲解了“Centos7怎么用rpm方式安装mysql-5.5”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Centos7怎么用rpm方式安装mysql-5.5”吧!一、rpm文件下载https://…