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)

相关推荐

  • elasticsearch索引管理知识点总结(elasticsearch设计减少内存使用)

    技术Elasticsearch可搜索快照是如何办到大幅降低存储成本的Elasticsearch可搜索快照是如何办到大幅降低存储成本的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需

    攻略 2021年12月16日
  • 如何介绍自己,他人介绍的介绍者有哪些

    技术如何介绍自己,他人介绍的介绍者有哪些在他人介绍中,介绍者的确定是有一定之规的。通常,具有 下列身份者,理应在他人介绍中充当介绍者。(1) 社交活动中的东道主。(2) 社交场合的长者。(3) 家庭性聚会中的女主人。(4

    生活 2021年10月20日
  • 抖音刷真人点赞,免费刷抖音赞?

    技术抖音刷真人点赞,免费刷抖音赞?抖音作品要吸引更多的人,抖音视频内容首先要吸引抖音用户关注。在抖音话题榜热搜榜上会出现很多热度非常高的作品,这种类型的作品自带热搜体质,点赞自然就多。其次,我们可以在抖音刷赞买赞网站上买

    测评 2021年10月26日
  • 怎么进行mysql dump备份文件的压缩对比

    技术怎么进行mysql dump备份文件的压缩对比这篇文章将为大家详细讲解有关怎么进行mysql dump备份文件的压缩对比,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

    攻略 2021年10月25日
  • linux如何获取脚本名称(linux怎么获取某一行的信息)

    技术怎么写linux脚本提取满足某个条件的行这篇文章主要介绍“怎么写linux脚本提取满足某个条件的行”,在日常操作中,相信很多人在怎么写linux脚本提取满足某个条件的行问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年12月23日
  • Vue3之Vue配套工具之Vuecli与Router

    技术Vue3之Vue配套工具之Vuecli与Router本篇内容介绍了“Vue3之Vue配套工具之Vuecli与Router”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如

    攻略 2021年10月22日