一条SQL语句是如何执行的?count(*),count(1)有什么不同?insert数据时为什么有时候会导致自增主键不连续?等等这一系列问题,可能我们在网上的各种文章上能看到具体的讲解,但是很少有文章能分析到源码层级,都是直接告诉我们结果是什么。深入理解这些问题的实现过程就需要我们自己去看MySQL的源码来找寻答案。
网上搜寻了一些调试源码的文档,发现不全面,所以结合自身配置过程,形成一篇教程以供参考。
一、准备工作
1、MacBook笔记本;[有homebrew]
2、创建MySQL安装目录和MySQL data目录
#mysql安装目录
mkdir -p /Users/tal/data0/dev_mysql/build_out
#mysql data目录
mkdir-p /Users/tal/data0/dev_mysql/build_out/data
3、下载MySQL源码包;
#这里选择5.7.30版本: [https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.30.tar.gz]
#进入下载目录
cd/Users/tal/data0/dev_mysql
#下载源码包
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.30.tar.gz
#解压源码包
tar-zxvf mysql-5.7.30.tar.gz
4、cmake环境;
brew install cmake
这里额外说一下homebrew配置国内源以提高效率:
# 替换 Homebrew
git-C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 替换 Homebrew Core
git-C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 替换 Homebrew Cask
git-C "$(brew --repo homebrew/cask)" remote set-url origin https://mir