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)

相关推荐

  • 怎么实现Hadoop集群搭建

    技术怎么实现Hadoop集群搭建怎么实现Hadoop集群搭建,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。阅读编译文档 准备一个hadoop源码包,我选择的

    攻略 2021年11月16日
  • 如何看iphone里的数据分析(怎么能看懂iphone的数据分析)

    技术如何进行iPhone步行数据的分析这期内容当中小编将会给大家带来有关如何进行iPhone步行数据的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我将展示如何利用 pandas

    攻略 2021年12月20日
  • 19. 删除链表的倒数第N个节点

    技术19. 删除链表的倒数第N个节点 19. 删除链表的倒数第N个节点两次遍历
    class Solution {public ListNode removeNthFromEnd(ListNode hea

    礼包 2021年12月20日
  • 如何解决云数据库MongoDB运行变慢问题

    技术如何解决云数据库MongoDB运行变慢问题这篇文章给大家介绍如何解决云数据库MongoDB运行变慢问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。阿里云数据库小分队破解了致使云数据库Mongo

    攻略 2021年11月4日
  • hadoop系列之三:Hadoop2.x安装与实验

    技术hadoop系列之三:Hadoop2.x安装与实验 hadoop系列之三:Hadoop2.x安装与实验如果参考我的是校友,同选大数据分析的课,不要直接复制,这是我的报告。我只能保证我这么做能做出来,

    礼包 2021年12月18日
  • 基于Maxwell的MySQL数据传输服务整体设计方法教程

    技术基于Maxwell的MySQL数据传输服务整体设计方法教程这篇文章主要介绍“基于Maxwell的MySQL数据传输服务整体设计方法教程”,在日常操作中,相信很多人在基于Maxwell的MySQL数据传输服务整体设计方

    攻略 2021年10月22日