MySQL源代码目录有哪些

技术MySQL源代码目录有哪些这篇文章主要介绍了MySQL源代码目录有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、源代码目录介绍:1、BUILD

本文主要介绍了MySQL源代码目录,具有一定的参考价值。有兴趣的朋友可以参考一下。希望你看完这篇文章后收获多多。让边肖带你去了解一下。

1、源代码目录介绍:

1、构建

BUILD目录是编译和安装脚本的目录,大部分都以compile-开头,其中的SETUP.sh脚本为C和C编译器设置了优化选项。

2、客户

客户端目录包括常用命令和客户端工具代码,这些源代码文件包括密码确认函数get_password.c、SSL连接可行性检查、MySQL客户端mysql.cc、mysqladmin工具和用于服务器操作的mysqladmin.c、用于显示数据库及其表和列的mysqlshow.c等。

3、存储

各种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

您应该会看到以下目录:

* innodb的目录innobase是目前最流行的存储引擎。

* myisam,最早的Mysql存储引擎,在innodb出现之前是使用最广泛的引擎。

*堆,基于内存的存储引擎。

*联合,一个相对较新的存储引擎。

*例如,csv,可以作为您编写自己的存储引擎的参考,易于阅读。

4、mysys

Mysys代表MySQL系统。

Library是MySQL的库函数文件。库函数是预编译函数的集合,这些函数是根据可重用性原则编写的。它们通常由一组相互关联的函数组成,用于完成一项共同的任务。本质上,库是一种可执行的二进制形式,可以由操作系统加载到内存中执行。有125个。mysys目录中的c文件,并且随着版本的演变和新函数的加入,库函数也在不断增加。

包括用于快速排序的mf_qsort.c、用于临时文件管理的mf_tempfile.c、用于定义客户端编译中使用的字符集类型的charset-def.c、用于字符集相关操作(字符集加载、初始化等)的charset.c。).

Mysys是一个大杂烩,里面包含了各种函数库文件,包括文件打开、数据读写、内存分配、OS/2系统特殊优化、线程控制、权限控制、RaidTable、动态字符串处理、队列算法、网络传输协议、初始化函数、错误处理、平衡二叉树算法、符号连接处理、生成唯一临时文件名、哈希函数、排序算法、压缩传输协议等。

5、sql

Mysql主函数mysqld.cc包含在sql目录中(是的,这是主数据库程序MySQL所在的地方,大部分系统进程都发生在这里。),它还包括解析/实现各种SQL语句、线程、查询解析和查询优化器,以及存储引擎接口(您也可以看到sql_insert.cc,

Sql_update.cc、sql_select.cc等。分别实现相应的SQL命令。我们以后会经常提到这个目录中的文件)。在storage下的每个存储引擎目录中,都有各种存储引擎的实现代码,而在sql/directory中,则有一个处理接口处理程序。处理程序类中有很多虚函数,需要通过它的子类来实现。

在今天的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_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

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL源代码目录有哪些”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/61877.html

(0)

相关推荐

  • ram架构和ram存储(嵌入式ram)

    技术如何进行嵌入式中常用内存RAM浅析本篇文章给大家分享的是有关如何进行嵌入式中常用内存RAM浅析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.说明随着

    攻略 2021年12月18日
  • Audition CC2019 安装教程(附安装包资源)

    技术Audition CC2019 安装教程(附安装包资源) Audition CC2019 安装教程(附安装包资源)原文链接:https://www.gujin.store/tools/package

    礼包 2021年10月26日
  • 如何理解MySQL索引cardinalit

    技术如何理解MySQL索引cardinalit本篇内容主要讲解“如何理解MySQL索引cardinalit”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解MySQL索引

    攻略 2021年10月29日
  • 一份超长的MySQL学习笔记,正在更新)

    技术一份超长的MySQL学习笔记,正在更新) 一份超长的MySQL学习笔记(正在更新)学习资源
    视频资料:韩顺平讲MySQL
    MySQL安装(Windows):MySQL安装+初始化操作
    MySQL本地

    礼包 2021年11月20日
  • C++中默认操作怎么定义

    技术C++中默认操作怎么定义本篇内容主要讲解“C++中默认操作怎么定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中默认操作怎么定义”吧!C.21:默认操作要定义就全

    攻略 2021年11月29日
  • 如何理解docker

    技术如何理解docker这篇文章给大家介绍如何理解docker,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 随着用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题

    攻略 2021年10月20日