Mysql源代码分析系列(1): 编译和调试--转载
- 通过了解Mysql的架构,学习大型系统软件的体系结构,希望自己在工作的时候也能应用到其中的一些技术
- 通过阅读代码,能够更好的理解Mysql的使用,也能做更深入的应用,比如性能调优,加入自己需要的功能和模块,等等
至于写文章,还是一件比较费脑力和时间的事情,虽然把想法写下来有助于更好的掌握学到的东西,尽量吧,而且我的文笔比较差。
这是第一篇,从编译和调试Mysql开始,不急于进入代码阅读阶段。
相关资源:
- http://www.mysql.com/
从这个地方下载源代码和使用文档。
- http://forge.mysql.com/wiki/MySQL_Internals
这里有一系列文章介绍Mysql的内部原理,是非常好的代码理解参考资源,强烈推荐有兴趣的人仔细阅读。除了代码本身,这也是是最权威的资料。
- http://www.amazon.com/Understanding-MySQL-Internals-Sasha-Pachev/dp/0596009577
这好像是我知道的唯一介绍Mysql工作原理的书,可以看看,也不是很厚。Google一下这本书,很多地方都有下载,不过都是E文,大家讲究着看吧,谁叫这是老外做出来的呢。
下载代码:
- http://dev.mysql.com/downloads/
需要注册,下载最新的5.1版本或者更高。
- 通过Bazaar 下载。
Bazaar是Mysql使用的源代码管理工具,类似于CVS,俺也没用过,有兴趣的自己看文档吧:
- A Contributor's Guide to Launchpad - Part 1 - Getting Started
- A Contributor's Guide to Launchpad - Part 2 - Code Management
编译代码:
BUILD/compile-pentium-debug
<pre>
#! /bin/sh
path=`dirname $0` #找到文件所在目录
set -- "$@" --with-debug=full #将命令行加上"--with-debug=full"
. "$path/SETUP.sh" # 导入SETUP.sh的内容,设置一些变量
extra_flags="$pentium_cflags $debug_cflags"
extra_configs="$pentium_configs $debug_configs"
. "$path/FINISH.sh" # 进行config和编译
</pre>
"--with-debug"实际上是autoconf脚本里面定义的,打开configure.in, 查找"with-debug",可以看看里面的参数有哪些不同。
执行脚本吧: $BUILD/compile-pentium-debug --prefix=$HOME/mysql-bin
这里我们执行目标安装目录是$HOME/mysql-bin,你也可以指定其他目录,尽量不要用默认目录,不然有可能和系统里面已经安装好的mysql文件冲突。
根据机器快慢,花的时间也不同,我用的机器花了不到10分钟。等待编译完毕,在sql目录下面可以看到sql/mysqld,恭喜你:-) 这就是mysql的服务器执行文件。
安装和运行:
安装: $make && make install
一大堆信息之后你应该可以在~/mysql-bin下面找到很多文件了
$ ls /home/liuli/mysql-bin/
bin include info lib libexec man mysql-test share sql-bench
比较重要的目录:
* bin: 客户端程序和脚本,可以发现比较眼熟的mysql, mysqld_safe, mysqldump, mysqladmin等
* libexec: 服务器程序,包括mysqld
* share: 配置文件,包括一些实例配置文件比如my-small.cnf以及初次安装运行需要的初始数据库文件比如mysql_system_tables.sql。
Mysql能够运行还需要一些配置文件和数据文件,执行这个命令:
应该可以看到:
调试:
代码调试:
当然是使用gdb啦,或者DDD也行,看个人喜好,这里用gdb做例子。
$ gdb --args ~/mysql-bin/libexec/mysqld --defaults-file=my.cnf --basedir=/home/aaa/mysql-bin --datadir=/home/aaa/mysql-bin/var --skip-networking
性能调试:
转载于:https://www.cnblogs.com/end/archive/2011/05/18/2050277.html
Mysql源代码分析系列(1): 编译和调试--转载相关推荐
- Mysql源代码分析系列
Mysql源代码分析系列(2): 源代码结构 Mysql源代码主要包括客户端程序代码,服务器端代码,测试工具和一些库构成,下面我们对比较重要的目录做些介绍. BUILD 这个目录在本系列的上篇文章中我 ...
- GDB调试器源代码分析系列--Inferior call的实现与分析(1)
[转] GDB调试器源代码分析系列--Inferior call的实现与分析(1) (2011-10-11 20:41) 标签: 分析 分类: 调试器 先说说几个概念: (1) 什么是infe ...
- Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门
概述 作业调度的目标在于按照预先确定的时间和指定的顺序来确保高效的数据处理流程,从而最大限度的使用系统资源.批处理流程是一种在无需最终用户干预的方式下在后台通过顺序方式运行的操作. Windows X ...
- BlogEngine.Net架构与源代码分析系列(转载)
01.BlogEngine.Net架构与源代码分析系列part1:开篇介绍 02.BlogEngine.Net架构与源代码分析系列part2:业务对象--共同的父类BusinessBase 03.Bl ...
- Quartz.NET 架构与源代码分析系列 part 2 :Job 作业
在上一篇Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门我们介绍了Quartz.NET 的基本知识和简单的应用,可以看出来它的使用是非常简单的,只要短短的几行代码 ...
- BlogEngine.Net架构与源代码分析系列part12:页面共同的基类——BlogBasePage
上一篇文章我向大家展示了BlogEngine.Net中Theme的原理和一些开发规范,里面有很多内容和这篇文章有着联系,建议大家这两篇文章结合在一起看,这样效果会更好.在这篇文章中我主要向大家说明Bl ...
- MyBatis架构设计及源代码分析系列(一):MyBatis架构
一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBatis data mapper framework makes it easier to use a re ...
- Spark SQL 源代码分析系列
从决定写Spark SQL文章的源代码分析,到现在一个月的时间,一个又一个几乎相同的结束很快,在这里也做了一个综合指数,方便阅读,下面是读取顺序 :) 第一章 Spark SQL源代码分析之核心流程 ...
- avclient安装_反病毒软件clamAV源代码分析 01 - 安装编译
最近发现网上有个开源的反病毒软件clamwin,官方地址是http://www.clamwin.com/,下个最新版本试下先. 据介绍这只是个UI壳,用Python/ wxPython写的,其实用的是 ...
- ◆勇敢者论坛源代码分析系列(1)—数据查询
前言:勇敢者论坛是一个开放源码的ASP.NET c#论坛,使用VS.NET 2005开发管理,可以支持两种数据库 SQL2000或Accsee.作者的开发本意,就是提供给大家学习使用的.写本系列代码分 ...
最新文章
- GOF23设计模式(创建型模式)建造者模式
- ARP协议详解之ARP动态与静态条目的生命周期
- c++ 编译器支持情况表
- 使用GruntJS构建Web程序 (1)
- 验证异常处理调用顺序
- va_list 简介
- hwd是长宽高吗_五菱皮卡要来了,五种形态任你选,颜值是你期待的吗?
- php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...
- 谷歌地图插件Mapsed.js
- JDK和JRE它们之间的关系及区别
- 图形学的几个非常有用的转换
- 值得收藏!中国金融体系主要指标大全
- NUnit 2.5.9 官网学游记(一) 入门
- ccproxy8.0破解版
- 解决 Chrome最新版右键工具中的编码修改功能没有了的工具
- 00后程序员摸爬滚打近一年,为学弟学妹们总结出了以下 7 条人生建议(建议收藏)
- 2017年深圳积分入户分值表(精简版)
- 怎么用手机控制电脑?手机控制手机如何实现?
- 自然语言处理核心期刊_中国中文信息学会
- 算法的时间与空间复杂度介绍
热门文章
- 【HDU1284 中南林业大学第十一届校赛 B:】兑换零钱(dp)
- 大学计算机应用与基础第二版答案,大学计算机应用基础(第2版)上机指导与习题集...
- Softmax 回归的从零开始实现 pytorch
- 多层感知机从零开始实现
- 307.区域和检索-数组可修改
- Torch7 out of memory 解决方法
- 麻省理工线性代数第一讲
- Raki的读paper小记:XLNet: Generalized Autoregressive Pretraining for Language Understanding
- php 编译安装gd 失败,编译安装php5 解决编译安装的php加载不了gd
- 跨页面调用方法_Excel多表汇总不用愁,五种多表合并方法,高效完成日常工作...