25 | MySQL编译器(一):解析一条SQL语句的执行过程
宫文学
该思维导图由 AI 生成,仅供参考
你好,我是宫文学。现在,就到了我们编译之旅的最后一站了,我们一起来探索一下 MySQL 编译器。
数据库系统能够接受 SQL 语句,并返回数据查询的结果,或者对数据库中的数据进行修改,可以说几乎每个程序员都使用过它。
而 MySQL 又是目前使用最广泛的数据库。所以,解析一下 MySQL 编译并执行 SQL 语句的过程,一方面能帮助你加深对数据库领域的编译技术的理解;另一方面,由于 SQL 是一种最成功的 DSL(特定领域语言),所以理解了 MySQL 编译器的内部运作机制,也能加深你对所有使用数据操作类 DSL 的理解,比如文档数据库的查询语言。另外,解读 SQL 与它的运行时的关系,也有助于你在自己的领域成功地使用 DSL 技术。
那么,数据库系统是如何使用编译技术的呢?接下来,我就会花两讲的时间,带你进入到 MySQL 的内部,做一次全面的探秘。
今天这一讲,我先带你了解一下如何跟踪 MySQL 的运行,了解它处理一个 SQL 语句的过程,以及 MySQL 在词法分析和语法分析方面的实现机制。
好,让我们开始吧!
编译并调试 MySQL
源代码里的主要目录及其作用如下,我们需要分析的代码基本都在 sql 目录下,它包含了编译器和服务端的核心组件。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了MySQL编译器的执行过程及其对SQL语句的处理。首先介绍了MySQL的源代码结构和编译调试的步骤,然后详细讲解了MySQL执行SQL语句的过程,包括词法分析和语法分析的实现机制。强调了SQL作为一种特定领域语言(DSL)的声明式特性和与高级语言的区别。文章还详细阐述了词法分析器和语法分析器的实现细节,展示了MySQL编译器的内部实现机制。此外,介绍了MySQL编译器生成的解析树和AST的结构,以及MySQL采用的LALR算法。通过本文的阅读,读者可以加深对数据库领域的编译技术的理解,以及对DSL技术的应用有所启发。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理实战课》,新⼈⾸单¥59
《编译原理实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- Fan宫老师,按照这篇文章https://www.codeleading.com/article/90351944418/ 用xcode build mysqld这个项目时,报下面的错误。请问老师知道是哪里出现了问题。 dyld: Symbol not found: __ZN20wireless_diagnostics6google8protobuf2io16CodedInputStream24default_recursion_limit_E Referenced from: /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Versions/A/Libraries/libAWDSupport.dylib。 Expected in: /Users/xxx/Documents/mysql-server/bld_debug/library_output_directory/Debug/libprotobuf-lite.dylib in /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Versions/A/Libraries/libAWDSupport.dylib
作者回复: 我没用过xcode编译,而是用cmake编译的,在macos和linux上都编译过。也建议你不要太依赖IDE,直接拿debug工具调试挺好的:-) 参考:https://dev.mysql.com/doc/internals/en/cmake.html
2020-08-2022 - myrfy没有自己开发过dsl,但是经常会用json作为配置文件,通过json格式的结构来描述一个类似于AST的结构,然后写一个解释器按照自己定义的规则去执行操作。 相当于人肉做了前端工作吧,等有时间了,可以自己去试着写一个前端部分,自己编写一套语法规则
作者回复: 多谢分享!
2020-07-3122 - 日就月将老师 mysql root用户缺省的密码 在哪里查看
作者回复: 在网上搜一下:-)
2021-07-28 - 吃饭老师,尝试可很久去debug mysql,还是不知道怎么搞,c++/c之类的的确不怎么熟,能详细描述一下吗?2021-07-25
收起评论