MySQL源码分析整理稿.docx

上传人:b****1 文档编号:2374610 上传时间:2022-10-29 格式:DOCX 页数:33 大小:1.01MB
下载 相关 举报
MySQL源码分析整理稿.docx_第1页
第1页 / 共33页
MySQL源码分析整理稿.docx_第2页
第2页 / 共33页
MySQL源码分析整理稿.docx_第3页
第3页 / 共33页
MySQL源码分析整理稿.docx_第4页
第4页 / 共33页
MySQL源码分析整理稿.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

MySQL源码分析整理稿.docx

《MySQL源码分析整理稿.docx》由会员分享,可在线阅读,更多相关《MySQL源码分析整理稿.docx(33页珍藏版)》请在冰豆网上搜索。

MySQL源码分析整理稿.docx

MySQL源码分析整理稿

MySQL源码分析

JonYao

编译安装

为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。

在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。

首先我们介绍如何从源代码部署一台MySQL服务器。

1.下载MySQL源码

 本文中演示使用的是mysql-5.5.8版本。

2.安装环境:

[root@localhost~]#uname-a

Linuxnx2.6.35-24-generic#42-UbuntuSMPThuDec201:

41:

57UTC2010i686GNU/Linux

[root@localhost~]#gcc-v

Usingbuilt-inspecs.

Target:

i686-linux-gnu

Configuredwith:

../src/configure-v--with-pkgversion='Ubuntu/Linaro4.4.4-14ubuntu5'--with-bugurl=file:

///usr/share/doc/gcc-4.4/README.Bugs--enable-languages=c,c++,fortran,objc,obj-c++--prefix=/usr--program-suffix=-4.4--enable-shared--enable-multiarch--enable-linker-build-id--with-system-zlib--libexecdir=/usr/lib--without-included-gettext--enable-threads=posix--with-gxx-include-dir=/usr/include/c++/4.4--libdir=/usr/lib--enable-nls--with-sysroot=/--enable-clocale=gnu--enable-libstdcxx-debug--enable-objc-gc--enable-targets=all--disable-werror--with-arch-32=i686--with-tune=generic--enable-checking=release--build=i686-linux-gnu--host=i686-linux-gnu--target=i686-linux-gnu

Threadmodel:

posix

gccversion4.4.5(Ubuntu/Linaro4.4.4-14ubuntu5)

添加运行MySQL程序的mysql用户(root权限):

Øgroupaddmysql

Øuseraddmysql–gmysql

Øcmake.-DCMAKE_BUILD_TYPE:

STRING=Release-DCMAKE_INSTALL_PREFIX:

PATH=/usr/local/mysql-DCOMMUNITY_BUILD:

BOOL=ON-DENABLED_PROFILING:

BOOL=ON-DENABLE_DEBUG_SYNC:

BOOL=OFF-DINSTALL_LAYOUT:

STRING=STANDALONE-DMYSQL_DATADIR:

PATH=/usr/local/mysql/data-DMYSQL_MAINTAINER_MODE:

BOOL=OFF-DWITH_EMBEDDED_SERVER:

BOOL=ON-DWITH_EXTRA_CHARSETS:

STRING=all-DWITH_SSL:

STRING=bundled-DWITH_UNIT_TESTS:

BOOL=OFF-DWITH_ZLIB:

STRING=bundled-LH

Ømake&&makeinstall

3.配置

配置MySQL的参数,可以support-files下配置文件的模板:

跳转到MySQL安装路径,cmake指定的地址:

/usr/local/mysql

cpsupport-files/my-f/etc/f

vi/etc/f

#//////////////////////////////////////////////

#UncommentthefollowingifyouareusingInnoDBtables

innodb_data_home_dir=/usr/local/mysql/data

innodb_data_file_path=ibdata1:

10M:

autoextend

innodb_log_group_home_dir=/usr/local/mysql/data

#Youcanset.._buffer_pool_sizeupto50-80%

#ofRAMbutbewareofsettingmemoryusagetoohigh

innodb_buffer_pool_size=16M

innodb_additional_mem_pool_size=2M

#Set.._log_file_sizeto25%ofbufferpoolsize

innodb_log_file_size=5M

innodb_log_buffer_size=8M

innodb_flush_log_at_trx_commit=1

innodb_lock_wait_timeout=50

#//////////////////////////////////////////////

按照测试的需求修改,注意加上datadir和innodb等部分重要参数。

修改/usr/local/mysql用户访问权限,

chown–Rmysql.

chgrp–Rmysql.

软连接,配置MySQL的资源文件路径

/usr/local/share/mysql->/usr/local/mysql/share/

设置path环境变量,方便实用:

PATH="/usr/local/mysql/bin:

/usr/JDK/bin:

设置服务启动

cpsupport-files/my.server/etc/inid.d/mysql

vi/etc/init.d/mysql

修改配置路径

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

mysqld_pid_file_path=/usr/local/mysql/data/nx.pid

4.安装数据库

bin/mysql_install_db--user=mysql

这里安装必要的数据库文件,如MySQL的系统表,--user=mysql是用来运行mysql的用户。

5.试运行服务

简单测试一下,运行/etc/init.d/mysqlstart

在Ubuntu系统上以root运行mysqld_safe时,会自动切换到mysql用户来运行mysqld程序。

查看mysqld进程,记录下启动时参数(斜体加粗部分),为今后的调试做准备。

[root@localhost~]#psaux|grepmysql

root200230.80.01896584pts/0S19:

360:

00/bin/sh/usr/local/mysql/bin/mysqld_safe--datadir=/usr/local/mysql/data--pid-file=/usr/local/mysql/data/nx.pid

mysql204462.62.732062427848pts/0Sl19:

360:

00/usr/local/mysql/bin/mysqld--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--plugin-dir=/usr/local/mysql/lib/plugin--user=mysql--log-error=/usr/local/mysql/data/nx.err--open-files-limit=65535--pid-file=/usr/local/mysql/data/nx.pid--socket=/tmp/mysql.sock--port=3306

6.停止服务

/etc/init.d/mysqlstop

调试

安装结束,进入正题调试环节。

通常Linux下程序员倾向于使用强大的gdb(GNUProjectDebugger)来调试程序,可以查看程序的内部结构、设置断点、查看调用堆栈等。

在本文中,我们尝试使用EclipseCDE,其本质上是带有图形界面的gdb,更方便直观,但依赖Java桌面环境。

1.安装

到www.eclipse.org下载最新版的EclipseC++版本

2.在调试选项中输入前面记录mysqld的启动参数。

3.设置断点,按F5开始运行调试。

4.当程序运行到断点时会暂停,此时可以查看输出、调用栈和当前的堆栈值等。

参考资料

http:

//www.kdbg.org/

主要模块及数据流

经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修改。

源码结构(MySQL-5.5.8)

1.BUILD:

内含在各个平台、各种编译器下进行编译的脚本。

如compile-pentium-debug表示在pentium架构上进行编译的脚本。

2.Client:

客户端工具,如mysql,mysqladmin之类。

3.Cmake:

新版mysql使用编译配置初始化工具包

4.Cmd-line-utils:

readline,libedit工具。

5.Config:

给aclocal使用的配置文件。

6.Dbug:

提供一些调试用的宏定义。

7.Docs:

文档库

8.Extra:

提供innochecksum,resolveip等额外的小工具。

9.Include:

包含的头文件

10.libmysql:

库文件,生产libmysqlclient.so。

11.libmysql_r:

线程安全的库文件,生成libmysqlclient_r.so。

12.libservices:

5.5.x中新加的目录,实现了打印功能。

13.Man:

手册页。

14.Mysql-test:

mysqld的测试工具一套。

15.Mysys:

为跨平台计,MySQL自己实现了一套常用的数据结构和算法,如string,hash等。

16.Packaging:

打包工具包

17.Netware:

在netware平台上进行编译时需要的工具和库。

18.Plugin:

mysql以插件形式实现的部分功能。

19.Pstack:

异步栈追踪工具。

20.Regex:

正则表达式工具。

21.Scripts:

提供脚本工具,如mysql_install_db等

22.Sql:

mysql主要代码,将会生成mysqld文件。

23.Sql-ben

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1