ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:1.01MB ,
资源ID:2374610      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2374610.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MySQL源码分析整理稿.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MySQL源码分析整理稿.docx

1、MySQL源码分析整理稿MySQL源码分析Jon Yao编译安装为了实现MySQL的更高级别的性能调优,我们通常需要理解其内部实现机制,并对其进行优化调试。在下面的系列中,我们会分别介绍MySQL的部分内部实现机制。首先我们介绍如何从源代码部署一台MySQL服务器。1. 下载MySQL源码本文中演示使用的是mysql-5.5.8版本。2. 安装环境:rootlocalhost # uname -aLinux nx 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 01:41:57 UTC 2010 i686 GNU/Linuxrootlocalhost #

2、gcc -vUsing built-in specs.Target: i686-linux-gnuConfigured with: ./src/configure -v -with-pkgversion=Ubuntu/Linaro 4.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 -enab

3、le-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-

4、32=i686 -with-tune=generic -enable-checking=release -build=i686-linux-gnu -host=i686-linux-gnu -target=i686-linux-gnuThread model: posixgcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)添加运行MySQL程序的mysql用户(root权限): groupadd mysql useradd mysql g mysql cmake . -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE

5、_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 -DWI

6、TH_SSL:STRING=bundled -DWITH_UNIT_TESTS:BOOL=OFF -DWITH_ZLIB:STRING=bundled -LH make & make install3. 配置配置MySQL的参数,可以support-files下配置文件的模板:跳转到MySQL安装路径,cmake指定的地址:/usr/local/mysqlcp support-files/my-f /etc/fvi /etc/f#/# Uncomment the following if you are using InnoDB tablesinnodb_data_home_dir = /us

7、r/local/mysql/datainnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /usr/local/mysql/data# You can set ._buffer_pool_size up to 50 - 80 %# of RAM but beware of setting memory usage too highinnodb_buffer_pool_size = 16Minnodb_additional_mem_pool_size = 2M# Set ._log_file_size

8、to 25 % of buffer pool sizeinnodb_log_file_size = 5Minnodb_log_buffer_size = 8Minnodb_flush_log_at_trx_commit = 1innodb_lock_wait_timeout = 50#/按照测试的需求修改,注意加上datadir和innodb等部分重要参数。修改/usr/local/mysql用户访问权限,chown R mysql .chgrp R mysql . 软连接,配置MySQL的资源文件路径/usr/local/share/mysql - /usr/local/mysql/shar

9、e/设置path环境变量,方便实用:PATH=/usr/local/mysql/bin:/usr/JDK/bin:设置服务启动cp support-files/my.server /etc/inid.d/mysqlvi /etc/init.d/mysql修改配置路径basedir=/usr/local/mysqldatadir=/usr/local/mysql/datamysqld_pid_file_path=/usr/local/mysql/data/nx.pid4. 安装数据库bin/mysql_install_db -user=mysql这里安装必要的数据库文件,如MySQL的系统表,-

10、user=mysql是用来运行mysql的用户。5. 试运行服务简单测试一下,运行/etc/init.d/mysql start在Ubuntu系统上以root运行mysqld_safe时,会自动切换到mysql用户来运行mysqld程序。查看mysqld进程,记录下启动时参数(斜体加粗部分),为今后的调试做准备。rootlocalhost # ps aux | grep mysqlroot 20023 0.8 0.0 1896 584 pts/0 S 19:36 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe -datadir=/usr/local/

11、mysql/data -pid-file=/usr/local/mysql/data/nx.pidmysql 20446 2.6 2.7 320624 27848 pts/0 Sl 19:36 0: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=655

12、35 -pid-file=/usr/local/mysql/data/nx.pid -socket=/tmp/mysql.sock -port=33066. 停止服务/etc/init.d/mysql stop调试安装结束,进入正题调试环节。通常Linux下程序员倾向于使用强大的gdb(GNU Project Debugger)来调试程序,可以查看程序的内部结构、设置断点、查看调用堆栈等。在本文中,我们尝试使用Eclipse CDE,其本质上是带有图形界面的gdb,更方便直观,但依赖Java桌面环境。1. 安装到www.eclipse.org下载最新版的Eclipse C+ 版本2. 在调试选

13、项中输入前面记录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.

14、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