MySQL 学习:使用 DBUG 包跟踪 MySQL 源码
MySQL 服务器(mysqld)及其大部分客户端都是与 DBUG 包(由 Fred Fish 开发,原生版本)一起编译的。在完成 mysqld 调试配置的前提下,弃用 DBUG 包会生成一个跟踪文件,其文件内容为 mysqld 的执行过程。通过该跟踪文件,我们可以更好地对 mysqld 进行调试跟踪及源码阅读。本文主要记录在 mysqld 中使用 DBUG 包的相关笔记。
MySQL 服务器(mysqld)及其大部分客户端都是与 DBUG 包(由 Fred Fish 开发,原生版本)一起编译的。在完成 mysqld 调试配置的前提下,弃用 DBUG 包会生成一个跟踪文件,其文件内容为 mysqld 的执行过程。通过该跟踪文件,我们可以更好地对 mysqld 进行调试跟踪及源码阅读。本文主要记录在 mysqld 中使用 DBUG 包的相关笔记。
本文主要记录,在 CentOS7 下编译安装 MySQL 5.7 debug 版相关笔记。
锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。InnoDB 存储引擎支持在行级别上对表数据上锁(行锁)。同时,InnoDB 存储引擎也会在数据库内部其他多个地方使用锁,从而允许对多种不同资源提供并发访问。例如,操作缓冲池中的 LRU 列表,删除、添加、移动 LRU 列表的元素,为了保证一致性,必须有锁的接入。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。--摘自《MySQL技术内幕:InnoDB存储引擎(第2版)》
InnoDB 存储引擎支持事务,其设计目标主要是面向在线事务处理(OLTP)的应用。作为 MySQL 数据库最为常用的一种引擎,Facebook、Google、Yahoo!等公司的成功应用已经证明了 InnoDB 存储引擎所具备的高可用性、高性能以及高可扩展性。从 MySQL 5.5.8 版本开始,InnoDB 存储引擎也成为 MySQL 默认的存储引擎。
在学习 MySQL 的过程中,经常会遇到遗忘 root 密码的情况。其中,在 MySQL 5.7.6+ 完成初始化后,会生成一个临时随机的密码(--initialize not --initialize-insecure),如果没有及时修改的话,密码过期后就无法登录。本文主要是根据 MySQL 官方手册-如何重置 root 密码进行测试验证并记录相关的笔记,以便翻阅。