标签 MySQL 下的文章

MacOS Navicat Keygen 使用

在 MacOS 中,之前一直都是使用 Sequel Pro 作为 MySQL 客户端,但是 Sequel Pro 经常会出现无解的崩溃现象,不胜其扰,最后决定尝试一下 Navicat。Navicat 是按年付费授权的,费用还是比较高的。不过,刚好 Github 上有 Navicat Keygen 工具可以使用(注:由于版权问题,该代码仓库已下线,2019-12-13),所以,本文主要针对 Navicat Keygen 的编译使用做一下备忘记录。

阅读全文 »

MySQL EXPLAIN 输出内容的含义

在优化 SQL 语句时,最常用的方式是使用 EXPLAIN 工具获取 SQL 语句的执行计划,之后通过分析,了解 MySQL 数据库将会如何执行对应的 SQL 语句,以便进行相应的语句调整、索引优化等。本文主要记录 EXPLAIN 输出内容的相应解释说明。

阅读全文 »

使用 CLion 调试 mysql 源码

在使用 mysql 的过程中,遇到了一些问题,虽然根据网络上的资料,多少解决了问题,但有时候,并没有给出合理的解释。从那时候开始,自己就越来越想更深入了解 mysql 的底层原理。最开始,不太懂得使用一些工具来调试跟踪,只能通过网上的资料,查找对应的源码,边看边理解,这样不仅效率低下、而且容易让人枯燥无法坚持。后来学会 gdb 工具的使用,于是开始在命令行下,使用 gdb 调试跟踪 mysql 源码。其中,在 gdb -tui 模式下,可以更好的显示 mysqld 所执行的每一步对应的源码文件及其所在的行数,这样跟踪学习 mysql 源码的效率就高多了。不过,因为是在命令行下跟踪,所以,不断切换 IDE 源码和终端,也是比较低效的(而且,gdb 在 macOS 下,attach 进程后经常卡死)。所以,这里主要记录一下另外一种更高效的方法,即:使用 CLion 调试 mysqld 源码。

阅读全文 »

MySQL 学习:ORDER BY filesort 原理

在使用 EXPLAIN 获取 SELECT 语句的执行计划时,如果 Extra 列包含 Using filesort 信息,那就说明 MySQL 在执行该查询语句时,无法利用索引排序,而进行了额外的排序。本文主要参考官方文档及网络资料,通过跟踪 filesort.cc 源码,理解并记录 filesort 的实现原理。

阅读全文 »