编译原理实战课
宫文学
北京原点代码 CEO
26066 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
真实编译器解析篇 (19讲)
编译原理实战课
15
15
1.0x
00:00/00:00
登录|注册

26 | MySQL编译器(二):编译技术如何帮你提升数据库性能?

Name_resolution_context对象
作用域
通过数据库模式信息进行引用消解
创建并填充SELECT_LEX_UNIT和SELECT_LEX对象
数据库名、表名、字段名格式检查
查询计划优化
常数折叠
死代码消除
常数传播优化
引用消解
上下文分析
Expert MySQL
Understanding MySQL Internals
借鉴思路
软件采用相似机制
关系数据库通过内置的DSL编译器来驱动运行的软件
与高级语言编译过程的相似性
编译技术在数据库系统中的重要作用
可能的优化
解释执行
优化
语义分析
语法分析
词法分析
参考资料
一课一思
总结
SQL语句编译成机器码
编译技术
MySQL编译器

该思维导图由 AI 生成,仅供参考

你好,我是宫文学。今天这一讲,我们继续来探究 MySQL 编译器。
通过上一讲的学习,你已经了解了 MySQL 编译器是怎么做词法和语法分析的了。那么在做完语法分析以后,MySQL 编译器又继续做了哪些处理,才能成功地执行这个 SQL 语句呢?
所以今天,我就带你来探索一下 MySQL 的实现机制,我会把重点放在 SQL 的语义分析和优化机制上。当你学完以后,你就能真正理解以下这些问题了:
高级语言的编译器具有语义分析功能,那么 MySQL 编译器也会做语义分析吗?它有没有引用消解问题?有没有作用域?有没有类型检查?
MySQL 有没有类似高级语言的那种优化功能呢?
好,让我们开始今天的探究吧。不过,在讨论 MySQL 的编译过程之前,我想先带你了解一下 MySQL 会用到的一些重要的数据结构,因为你在解读代码的过程中经常会见到它们。

认识 MySQL 编译器的一些重要的数据结构

第一组数据结构,是下图中的几个重要的类或结构体,包括线程、保存编译上下文信息的 LEX,以及保存编译结果 SELECT_LEX_UNIT 和 SELECT_LEX。
图 1:MySQL 编译器的中的几个重要的类和结构体
首先是 THD,也就是线程对象。对于每一个客户端的连接,MySQL 编译器都会启动一个线程来处理它的查询请求。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

MySQL编译器在提升数据库性能方面发挥着重要作用。本文深入探讨了MySQL编译器的实现机制,重点关注了SQL的语义分析和优化机制。文章首先介绍了MySQL编译器使用的重要数据结构,包括线程、LEX、SELECT_LEX_UNIT和SELECT_LEX等对象。随后详细讨论了MySQL编译器的上下文分析工作,以及引用消解的过程。文章还指出MySQL在执行SQL命令时才进行引用消解,通过查表的定义和元数据来验证表名和字段名的合法性。此外,文章还介绍了MySQL中作用域的概念以及表示作用域的Name_resolution_context对象。最后,文章提出了一个问题:MySQL是如何进行优化的?读者将了解到MySQL编译器在语义分析和优化方面的工作原理,以及与高级语言编译器的异同之处。MySQL编译器的工作原理和优化机制对于理解数据库性能优化具有重要意义。 MySQL编译器的优化功能主要在sql_optimizer.cc中实现,包括常数传播优化、死代码消除和常数折叠等。此外,文章还探讨了能否将SQL语句编译成机器码以提升执行效率的问题。文章指出,MySQL在执行SQL语句时需要进行解释执行,而将计算功能编译成本地代码理论上可提升执行效率。然而,目前尚未看到MySQL在这方面的工作,而PostgreSQL则已经实现了这种优化。最后,文章总结了MySQL的编译技术在数据库系统中的重要作用,并指出了与高级语言编译器的相似性,为读者提供了思考和借鉴的机会。 总的来说,本文深入探讨了MySQL编译器的实现机制和优化功能,以及将SQL语句编译成机器码的可能性,为读者提供了对数据库性能优化和编译技术的深入了解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • sugar
    浏览器中的html+css 作为ui界面样式,也是一种实用很广泛的dsl。特别是css3 、或一些预处理css工具所衍生出的css方言都会带有表达式计算 甚至自定义函数的能力。

    作者回复: Great!

    2020-08-03
    3
  • myrfy
    正则表达式,sed、awk等文本编辑用的命令行工具。

    作者回复: 嗯,解析正则表达式要简单一点,但也已经能够使得很多命令变得很强大了!

    2020-07-31
    1
  • 52rock
    了解引用消解是怎么回事了
    2020-08-29
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部