随笔 - 150, 文章 - 0, 评论 - 11, 阅读 - 18万
  博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  mysql源码

摘要:Mysql 源码解读-执行器 一条 sql 执行过程中,首先进行词法分析和语法分析,然后将由优化器进行判断,如何执行更有效率,生成执行计划,后面的任务就交给了执行器。在执行的过程中,执行器就会和存储引擎交互了,交互是以记录为单位的。本文我们介绍下 MySQL8的执行器。 在前几篇文章中,我们讲述了 阅读全文

posted @ 2022-12-02 12:40 面具下的戏命师 阅读(1819) 评论(0) 推荐(0) 编辑

摘要:Mysql 源码解读-优化器 一条 sql 执行过程中,首先进行词法分析和语法分析,然后将由优化器进行判断,如何执行更有效率,生成执行计划。在前几篇文章中,我们已经介绍了 AST 语法树是如何生成的,接下来我们探索一下 MySQL 的优化器,查询优化器是专门负责优化查询语句的优化器模块,通过计算分析 阅读全文

posted @ 2022-12-01 16:06 面具下的戏命师 阅读(1249) 评论(0) 推荐(0) 编辑

摘要:MySQL 源码解读之-语法解析(四) 在上篇文章中,我们分析了一条 sql 语句 select * from bank; 警告bison 语法解析器(MYSQLparser 函数)生成的AST 树的结构,如下图所示: mysql 需要对这个AST 做进一步的处理,调用 LEX::make_sql_ 阅读全文

posted @ 2022-11-19 13:25 面具下的戏命师 阅读(1090) 评论(0) 推荐(0) 编辑

摘要:MySQL 源码解读之-语法解析(三) 在前两篇文章中已经讲述了 bison 如何解析 sql 语句并生成 AST 树。那么 MySQL是如何和 bison 的程序关联起来的呢,并通过gdb 调试一下。在MySQL 源码解读之-语法解析(二)中我们用到了许多词法解析和语法解析的术语概念,例如 DFA 阅读全文

posted @ 2022-11-15 19:01 面具下的戏命师 阅读(1065) 评论(0) 推荐(0) 编辑

摘要:MySQL 源码解读之-语法解析(二) 承接上一篇博客中提到了语法解析中涉及的数据结构。我们继续分析MySQL 在做语法分析的执行过程。MySQL的语法分析器是用bison工具生成的,bison是一个语法分析器生成工具。bison的规则文件是sql/sql_yacc.yy,经过编译后会生成sql/s 阅读全文

posted @ 2022-11-13 16:34 面具下的戏命师 阅读(1543) 评论(0) 推荐(0) 编辑

摘要:MySQL 源码解读之-语法解析(一) 语法分析是编译过程的一个逻辑截断。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.语法分析程序可以用YACC(BISON)等工具自动 阅读全文

posted @ 2022-11-13 15:54 面具下的戏命师 阅读(2085) 评论(0) 推荐(0) 编辑

摘要:MySQL 源码解读之-词法分析 词法分析(lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法 阅读全文

posted @ 2022-10-21 21:31 面具下的戏命师 阅读(1438) 评论(0) 推荐(0) 编辑

摘要:MySQL 调试方式之mysqld.trace MySQL 的 debug 版提供了一个专门的 DBUG 包。通过这个 DBUG 包,可获取正在执行操作程序的 Trace 文件。通过控制 DBUG 开关,可以将 MySQL 的任何操作,以及所涉及的调用模块、函数、状态信息记录在 Trace 文件中。 阅读全文

posted @ 2022-07-20 16:18 面具下的戏命师 阅读(1515) 评论(0) 推荐(0) 编辑

摘要:MySQL源码分析之 通信协议(二) mysql 通信包括,握手连接阶段、命令执行阶段和主从复制协议。在连接执行以下任务,客户端和服务器数据交换,如果请求加密设置 ssl 连接通道,根据服务器对客户端进行身份验证。 服务器和客户端完整交互如下: 1、登录认证交互报文 初始化握手,初始化握手从服务端发 阅读全文

posted @ 2022-05-16 17:24 面具下的戏命师 阅读(708) 评论(0) 推荐(0) 编辑

摘要:MySQL源码分析之 通信协议(一) mysql 通信协议用于 mysql 客户端和服务器之间的通讯,通过以下几种方式实现: 1)、接口: (Connector/C, Connector/J, 等) 即平时我们所说的 JDBC ODBC 等接口 2)、mysql 中间件 3)、主服务器和从服务器之间 阅读全文

posted @ 2022-05-13 12:23 面具下的戏命师 阅读(1856) 评论(0) 推荐(2) 编辑

摘要:MySQL 源码解读之 IO_CACHE 在数据库中 IO 的重要性不言而喻,为了更好的管理 IO 操作,大多数数据库都自己管理页数据和刷脏机制(例如 InnoDB 中的 Buffer pool),而不是交给文件系统甚至是操作系统调度。但是对于顺序写入的日志数据,使用文件系统接口方便的多,文件系统也 阅读全文

posted @ 2022-05-05 13:00 面具下的戏命师 阅读(734) 评论(0) 推荐(1) 编辑

摘要:Vscode 远程 连接 Linux 服务器编译调试MySQL 在当今这个时代,提到 DBA,已经不是会一个 oracle 就可以吃遍天下了。 如下开源横行,一个优秀的DBA要能进行一般内核问题的故障诊断与分析。在两年前笔者写了一篇windows下使用visual studio编译调试MySQL。出 阅读全文

posted @ 2022-04-29 11:45 面具下的戏命师 阅读(1698) 评论(0) 推荐(0) 编辑

摘要:MySQL源码解读之数据结构-LF_HASH MySQL的代码中实现了一个Lock Free的Hash结构,称作LF_Hash。Metadata_Lock就依赖于它。LF_HASH具有以下特点: 1、动态扩展: 初始化时bucket的数量是1. 每个bucket平均拥有的元素(Element)是1个 阅读全文

posted @ 2022-01-14 10:33 面具下的戏命师 阅读(369) 评论(0) 推荐(0) 编辑

摘要:MySQL源码解读之数据结构-lf_alloc-pin 在无锁编程(Lock Free)中的存在这样一个问题:由于指针都是线程间共享的,当一个线程准备释放一个指针指向的内存时,它无法知道是否另有别的线程也同时持有该块内存的指针并需要访问,mysql就是通过lf_alloc-pin来解决此问题。同时无 阅读全文

posted @ 2021-07-08 18:40 面具下的戏命师 阅读(283) 评论(0) 推荐(0) 编辑

摘要:MySQL源码解读之数据结构-LF_DYNARRAY LF_DYNARRAY数据结构是应用于LF_PINS和LF_HASH数据结构的一种特殊数据结构。该结构不同于DYNAMIC_ARRAY动态数组结构物理分配和逻辑操作,而是一种层级分配管理方式进行组织,对于稀疏、非连续的数组存储可以有效的提高空间利 阅读全文

posted @ 2021-07-06 17:10 面具下的戏命师 阅读(215) 评论(0) 推荐(0) 编辑

摘要:MySQL源码解读之数据结构-动态数组 有时候在使用数组时,不能确定数组的大小。遇到这种情况在声明数组时,如果长度过小在使用时会导致数组溢出,长度过长会造成内存空间的浪费。因此动态数组的出现就是为了解决这个问题,在声明数组时不指定大小,在运行时具有可以改变数组大小的能力。 在MySQL中,自身定义了 阅读全文

posted @ 2021-07-02 16:37 面具下的戏命师 阅读(359) 评论(0) 推荐(0) 编辑

摘要:windows下使用visual studio编译调试MySQL MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载 阅读全文

posted @ 2020-08-24 15:30 面具下的戏命师 阅读(3114) 评论(2) 推荐(0) 编辑

点击右上角即可分享
微信分享提示