读 MySQL 源码再看 INSERT 加锁流程( 二 )


我的环境是 windows 10 x64,系统上安装了 Visual Studio 2012,如果你的开发环境和我不一样,编译步骤可能也会不同 。
在开始之前,首先要从官网下载 MySQL 源码(下载地址):

读 MySQL 源码再看 INSERT 加锁流程

文章插图
 
这里我选择的是 5.6.40 版本,操作系统下拉列表里选 Source Code,OS Version 选择 Windows(Architecture Independent),然后就可以下载打包好的 zip 源码了 。
将源码解压缩到 D:mysql-5.6.40 目录,在编译之前,还需要再安装几个必要软件:
  • CMake:CMake 本身并不是编译工具,它是通过编写一种平台无关的 CMakeList.txt 文件来定制编译流程的,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程;
  • Bison:MySQL 在执行 SQL 语句时,必然要对 SQL 语句进行解析,一般来说语法解析器会包含两个模块:词法分析和语法规则 。词法分析和语法规则模块有两个较成熟的开源工具 Flex 和 Bison 分别用来解决这两个问题 。MySQL 出于性能和灵活考虑,选择了自己完成词法解析部分,语法规则部分使用了 Bison,所以这里我们还要先安装 Bison 。Bison 的默认安装路径为 C:Program FilesGnuWin32,但是千万不要这样,一定要记得选择一个不带空格的目录,譬如 C:GnuWin32 要不然在后面使用 Visual Studio 编译 MySQL 时会卡死;
  • Visual Studio:没什么好说的,Windows 环境下估计没有比它更好的开发工具了吧 。
安装好 CMake 和 Bison 之后,记得要把它们都加到 PATH 环境变量中 。做好准备工作,我们就可以开始编译了,首先用 CMake 生成 Visual Studio 的工程文件:
D:mysql-5.6.40> mkdir project``D:mysql-5.6.40> cd project``D:mysql-5.6.40project> cmake -G "Visual Studio 11 2012 Win64" ..cmake 的 -G 参数用于指定生成哪种类型的工程文件,这里是 Visual Studio 2012,可以直接输入 cmake -G 查看支持的工程类型 。如果没问题,会在 project 目录下生成一堆文件,其中 MySQL.sln 就是我们要用的工程文件,使用 Visual Studio 打开它 。
打开 MySQL.sln 文件,会在 Solution Explorer 看到 130 个项目,其中有一个叫 ALL_BUILD,这个时候如果直接编译,编译会失败,在这之前,我们还要对代码做点修改:
  • 首先是 sqlsql_locale.cc 文件,看名字就知道这个文件用于国际化与本土化,这个文件里有各个国家的语言字符,但是这个文件却是 ANSI 编码,所以要将其改成 Unicode 编码;
  • 打开 sqlmysqld.cc 文件的第 5239 行,将 DBUG_ASSERT(0) 改成 DBUG_ASSERT(1),要不然调试时会触发断言;
现在我们可以编译整个工程了,选中 ALL_BUILD 项目,Build,然后静静的等待 5 到 10 分钟,如果出现了 


推荐阅读