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功能。MySQL网络子系统将调用这里的方法。
7、regex
regex为MySQL提供执行正则匹配函数REGEXP时的支持。
8、dbug
使用with-debug参数编译的MySQL会显示dbug输出,代码中的所有.c和.cc文件均可调用这个库。
2、安装目录介绍:
On Windows, the default installation directory is C:\mysql, which has the following subdirectories:
|
Directory |
Contents of Directory |
|---|---|
|
bin |
Client programs and the mysqld server |
|
data |
Log files, databases |
|
Docs |
Documentation |
|
examples |
Example programs and scripts |
|
include |
Include (header) files |
|
lib |
Libraries |
|
scripts |
Utility scripts |
|
share |
Error message files |
Installations created from Linux RPM distributions result in files under the following system directories:
|
Directory |
Contents of Directory |
|---|---|
|
/usr/bin |
Client programs and scripts |
|
/usr/sbin |
The mysqld server |
|
/var/lib/mysql |
Log files, databases |
|
/usr/share/doc/packages |
Documentation |
|
include/usr/include/mysql |
Include (header) files |
|
lib/usr/lib/mysql |
Libraries |
|
/usr/share/mysql |
Error message and character set files |
|
sql-bench/usr/share/sql-bench |
Benchmarks |
On Unix, a tar file 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:
|
Directory |
Contents of Directory |
|---|---|
|
bin |
Client programs and the mysqld server |
|
data |
Log files, databases |
|
docs |
Documentation, ChangeLog |
|
include |
Include (header) files |
|
lib |
Libraries |
|
scripts |
mysql_install_db |
|
share/mysql |
Error message files |
|
sql-bench |
Benchmarks |
A source distribution is installed after you configure and compile it. By default, the installation step installs files under /usr/local, in the following subdirectories:
|
Directory |
Contents of Directory |
|---|---|
|
bin |
Client programs and scripts |
|
include/mysql |
Include (header) files |
|
info |
Documentation in Info format |
|
lib/mysql |
Libraries |
|
libexec |
The mysqld server |
|
share/mysql |
Error message files |
|
sql-bench |
Benchmarks and crash-me test |
|
var |
Databases and log files |
转:http://blog.csdn.net/cymm_liu/article/details/45822637
mysql 源代码目录及安装目录介绍的更多相关文章
- Confluence 6 临时目录(安装目录)
temp 目录是由 Java 运行时进行配置的,同时一些 Confluence 的组件将会写入历史文件或者锁定文件到这个目录中. 临时目录位于安装目录下的 /temp 目录中. 希望修改这个目录的位置 ...
- ubuntu MySQL采用apt-get install安装目录
一). ubuntu下mysql安装布局: /usr/bin 客户端程序和mysql_install_db /var/lib/mysql ...
- linux目录和安装目录学习
我一般会在/opt目录下创建 一个software目录,用来存放我们从官网下载的软件格式是.tar.gz文件,或者通过 wget+地址下载的.tar.gz文件 执行解压缩命令,这里以nginx举例 t ...
- MySQL 源代码scr.rpm安装的一点注意事项
rpm安装包通常为二进制包(Binary)以及源代码包(Source)两种形式. 在使用源代码方式安装MySQL的时候,官方站点上下载的源代码包通常为scr.rpm格式,而不是直接的tar包.对此,须 ...
- ubuntu MySQL采用apt-get install安装目录情况
安装服务器:root@ubuntu:/# apt-get install mysql-server-5.5 安装客户端:root@ubuntu:/# apt-get install mysql-cli ...
- MySQL Server 5.5安装中遇到的问题及解决方法
之前开始用师兄用过的电脑工作,各种不适应,开始重新搭建自己习惯的环境,重装MySQL就是其中一项,然后重装过程中遇到了问题,具体情况总结如下: 1.以前也重新安装过MySQL,但是完全没有用过就直接卸 ...
- Win7+VS2010:mysql 源代码编译与调试
win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们 ...
- rpm安装mysql 默认安装目录
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为Linux本身的目录结构就比较 ...
- mysql默认安装目录说明
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比 ...
随机推荐
- Python笔记 #08# NumPy: Statistic Basis
数据分析的基本步骤: 了解你的数据(get to know your data), 做一些统计学处理(像僵尸一样盯着数字不会带给你任何灵感!) 实现可视化(get a better feeling f ...
- Java 时间格式处理
jdk里面的日期格式处理使用SimpleDateFormat,这个类其实也是在内部调用的Calendar Calendar概念比较负责,涉及到时区和本地化 看一些简单的demo: package co ...
- SpringBoot.资料
1.du 搜 "springboot 视频" 2.SpringBoot视频教程_哔哩哔哩 (゜-゜)つロ 干杯_-bilibili.html(https://www.bilibil ...
- Spring 及 SpringMVC的web.xml配置详解
出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...
- 2-3-2 rsync+inotify备份同步数据
RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Dav ...
- HDU1565 方格取数 &&uva 11270 轮廓线DP
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- java--Quartz 定时执行
第一步:引包(Maven) <!-- 定时任务 --> <dependency> <groupId>org.quartz-scheduler</groupId ...
- iptable filter nat MASQUERADE snat dat
在这里,系统会根据IP数据包中的destination ip address中的IP地址对数据包进行分发.如果destination ip adress是本机地址,数据将会被转交给INPUT链.如果不 ...
- iOS UI-线程(NSThread)及其安全隐患与通信
一.基本使用 1.多线程的优缺点 多线程的优点 能适当提高程序的执行效率 能适当提高资源利用率(CPU.内存利用率) 多线程的缺点 开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占 ...
- PHP和JAVA整合开发的三个方案(六)
php作为前端开发,java负责后台开发,这样取长补短的方案很适合现在web开发.现在PHP和JAVA整合开发比较好的方案只有3个:1.SOAP2.php-java-bridge3.Quercus Q ...