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)

相关推荐

  • MySQL学习笔记:十、创建和管理表

    技术MySQL学习笔记:十、创建和管理表 MySQL学习笔记:十、创建和管理表1. 基础知识
    1.1 一条数据存储的过程
    存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分

    礼包 2021年12月15日
  • mysql的sql脚本如何导入sql中(mysql客户端导入大sql文件到表)

    技术mysql如何实现导入大的sql脚本这篇文章将为大家详细讲解有关mysql如何实现导入大的sql脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.首先 导入sql文件:sour

    攻略 2021年12月20日
  • php计算时间还有多少天(php计算从现在到指定日期还有多久)

    技术php如何查询还有多少天这篇文章将为大家详细讲解有关php如何查询还有多少天,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 php查询还有多少天的方法:

    攻略 2021年12月19日
  • LeetCode538 把二叉搜索树转为累加树

    技术LeetCode538 把二叉搜索树转为累加树 LeetCode538 把二叉搜索树转为累加树题目
    给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum T

    礼包 2021年12月13日
  • ln求导公式,ln,X+√1+x2)如何求导

    技术ln求导公式,ln,X+√1+x2)如何求导(ln(x+√(1+x^2)))=(x+√(1+x^2))/(x+√(1+x^2))
    =(1+2x/(2√(1+x^2)))/(x+√(1+x^2))
    =1/√(1+x^2

    生活 2021年10月21日
  • 如何用jquery删除html标签

    技术如何用jquery删除html标签本篇内容介绍了“如何用jquery删除html标签”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

    攻略 2021年11月1日