之前的一篇月报MySQL · 源码分析 · 原子DDL的实现过程对MySQL8.0的原子DDL的背景以及使用的一些关键数据结构进行了阐述,同时也以CREATE TABLE为例介绍了Server层和Storage层统一系统表后如何创建一张新表进行了介绍。接下来本篇文章,我们将以DROP TABLE为例来继续看一下MySQL8.0对于DDL执行成功和执行失败时,如何实现DDL事务的提交和回滚。为了实现
# 如何查看MySQL源码 ## 一、流程图 ```mermaid flowchart TD A[下载MySQL源码] --> B[解压源码] B --> C[配置源码编译环境] C --> D[编译源码] D --> E[查看源码] ``` ## 二、详细步骤 ### 1. 下载MySQL源码 首先,你需要下载MySQL源码,可以从官方网站或GitHu
原创 2024-06-23 04:02:55
58阅读
# 如何查看 MySQL 源码 作为一名开发者,了解 MySQL 的源代码不仅能够加深对数据库的理解,还能帮助我们更好地优化和调试我们的应用程序。本文将指导你如何查看 MySQL源码,分步骤详细说明,并提供相关代码示例。 ## 流程概述 以下是查看 MySQL 源码的步骤: | 步骤 | 操作 | 描述
原创 2024-08-25 04:55:38
75阅读
一、基本介绍在前面的一篇中初步对InnoDB磁盘结构的表空间,数据字典,双写缓冲区、日志进行分析说明,对InnoDB的磁盘结构有了一个整体上的概念上的认识。这样,在下面的源码分析中,就可以比较清楚的把功能和源码的内容就对起来,做到心中有数,看代码才不会一头雾水。二、表空间表空间是InnoDB在文件IO上的一层逻辑存储空间管理的结构,它基本可以分为space、segment inode、extent
转载 2024-04-01 21:47:14
327阅读
MySQL允许通过触发器、存储过程、函数的形式来存储代码。从MySQL5.1开始,还可以在定时任务中存放代码,这个定时任务也被称为事件。存储过程和存储函数都被同城为存储程序。这四种存储代码都使用特殊的sql语句扩展,它包含了很多过程处理语法,例如循环和条件分支等。不同类型的存储代码的主要却别在于其执行的上下文;也就是其输入和输出。存储过程和存储函数都可以接受参数然后返回值,但是触发器和事件却不行。
本文主要分析8.0.22Mysql的SELECT执行流程,源码来自:https://github.com/mysql/mysql-server。本文概括性的分析了Mysql通过网络请求获取客户端的SQL,然后将SQL转换成LEX语法树,再转换成具体执行,最后从内存或磁盘中加载PAGE得到最终想要的RECORD。一、先介绍Mysql入口及网络请求1.1、mysql的入口//main.cc int m
转载 2023-08-31 06:55:20
417阅读
Mysql源代码主要包括客户端程序代码,服务器端代码,测试工具和一些库构成,下面我们对比较重要的目录做些介绍。 BUILD 这个目录在本系列的上篇文章中我们仔细看过,内含各种平台的编译脚本,这里就不仔细说了。 client 这个目录下有如下比较让人眼熟的文件: mysql.cc, mysqlcheck.c, mysqladmin.cc, mysqlshow.c,等等,如果你编译
转载 2023-11-01 20:51:26
189阅读
今天看数据库内核月报,发现一个蛮有意思的问题,就是show binary logs的时候没有任何结果,这个问题的原因很简单,但是分析问题的过程相比是艰辛的,需要在各种潜在的可能中找到那个肯定的结果。当然这个问题带给我的最大福利不是解决了这个问题,而是通过这个问题我们可以换一个思路来分析,比如说通过源码的方式来了解更多的细节。我在自己的电脑上下载了MySQL近几个版本的源码,平时很少看,但是环境基本
一条查询语句在mysql 源代码的执行路径使用mysql数据库已经有好几年的时间,一直没有时间去研究mysql的内部执行过程,只能通过一些固定的 思维导向和理论去猜测问题出现的缘由,最近有时间探查一下mysql源码。main方法mysql的启动方法也是main方法,并非用java语言编写,而是c和c++语言编写的。 一条查询语句大概会经过下面几个模块的处理:网络连接监听;线程池处理请求;查询解析
InnoDB存储引擎是开源的,这意味着你可以获得其源代码,并查看内部的具体实现。任何时候,WHY都比WHAT重要。通过研究源代码,可以更好地理解数据库是如何工作的,从而知道如何使数据库更好地为你工作。如果你有一定的编程能力,则完全可以对InnoDB存储引擎进行扩展,开发出新的功能模块来更好地支持你的数据库应用。获取InnoDB存储引擎源代码InnoDB存储引擎的源代码被包含在MySQL数据库的源代
转载 2023-10-17 22:53:03
270阅读
一、查看数据库的字符集 show variables like 'collation%'; show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Variable_name | Value | +--------------------------+----
语法分析——YACC         接触过SQL语句的人都会看过这家或者那家的SQL手册,其语法标准应该是从SQL92开始吧,在看SQL92标准的时候,你会发现里面定义的都是一些巴科斯范式(BNF),就是一种语法定义的标准。不管是牛X哄哄的ORACLE,还是不幸被其收购的Mysql,都会遵循里面的标准语法,当然一些扩
mysql源码剖析–词法解析过程引言1 核心概念1.1 token1.2 my_lex_states2 主要流程 引言一条sql语句传输到服务端后,必须先经过词法解析、语法分析生成语法树。一般程序的编译器大都采用flex完成词法解析、bison实现语法分析;mysql为了提高词法解析的效率和灵活性,独立编码实现了自己的词法解析模块。1 核心概念词法解析过程是通过扫描sql文本进行分词,并识别每个
转载 2024-03-30 19:16:26
37阅读
一、问题在C/C++中,函数的定义本质上是在编译阶段完成,而函数调用是由链接完成。但是对于python这种语言,函数的定义和调用都是由解释器在运行时完成,或者说,解释器在执行函数定义的时候,同样是生成了虚拟机指令,这个指令通常可以理解为MAKE_FUNCTION这个虚拟机指令,这个指令生成的则是一个PyFunctionObject对象。对应的,在函数调用的时候执行的是CALL_FUNCTION,这
mysql的源代码目录中,sql目录是mysql源代码中经常变化的目录之一,也是MySQL服务器内核最为核心和重要的目录。sql目录除了包含mysqld.cc这一MySQL main函数所在文件外,还包括了各类SQL语句的解析/实现。 在sql目录下的main.cc里面就调用了一个mysqld_main(),但是mysql里面好像有一个win_main()和mysqld_main(),
查看注解源码,按住Ctrl,鼠标放到需要查看的注解的上面,会自动出现下划线,点击就会打开源码文件,比如查看@SpringBootApplication源码 基本都可以用这个方法看源码,不止看注解的源码 网上还有人介绍可以用Ctrl+n组合键,选中你要查看的内容,然后Ctrl+N,  点击具体文件就可以了
转载 2023-06-26 17:36:44
536阅读
前言:最近在研究MediaCodec,u盘坏了,之前下载的源码也就自然没有了,真是个难过的事情,不能因为没有源码了,就阻挡我的计划了呀,于是就是今天一文,在线看Android源码,加之此前很多人也有向我留言,如何看android系统的源码,今天来敲黑板,划重点了。不管是做Android底层开发,还是做应用层开发,在Android这条路上走下去,必须对于Android源码够了解,如某一个功能,某一个
使用VS2017/VSCode编译libdwarf工程VS2017支持Cmake编译,我将使用VS2017编译libdwarf库,在网上查了好多与dwarf相关的文章,在GitHub上可以轻易下载到libdwarf的源码,但是不知道如何使用,libdwarf库为开源代码,符合LGPL。下载libdwarf库打开github.com直接搜索libdwarf,排行第一的就是,地址https://git
转载 2024-05-05 07:45:10
167阅读
文章目录前言一、源码阅读工具二、阅读源码1. 目录结构2.package.json3.index.js三、使用该包1. vue-cli中使用2. create-react-app 中使用总结 前言validate-npm-package-name 是一个用于检测npm包是否符合标准的包,被很多脚手架创建工具使用:vue-cli 、create-react-app 源码地址:https://git
转载 2024-01-20 20:22:47
397阅读
这篇文章中,我们一起探讨了如何通过已经安装的OpenCV,选择不同的编译器类型,生成高度还原的OpenCV开发时的解决方案工程文件,欣赏OpenCV新版本中总计 六十六多万行的精妙源代码。我们可以对其源代码进行再次编译,得到二进制文件,或者修改原版官方的OpenCV代码,并编译后为自己所用,为深入理解OpenCV的开源魅力迈出了坚实的一步。一、下载安装cmake想要在Windows平台下生成Ope
  • 1
  • 2
  • 3
  • 4
  • 5