openGauss内核分析
文章平均质量分 90
openGauss内核分析
Gauss松鼠会
深耕数据库10余年,致力于GaussDB、openGauss等数据库技术的学习、探索与传播。
展开
-
【openGauss数据库内核分析系列】:数据库索引的创建过程
openGauss内核分析:数据库索引的创建过程原创 2022-12-23 10:43:08 · 3281 阅读 · 29 评论 -
【openGauss数据库内核分析系列】:数据库表的创建过程
数据库表的创建过程原创 2022-11-08 09:11:27 · 2901 阅读 · 15 评论 -
【openGauss数据库内核分析系列】:执行算子探究
执行引擎位于优化器和存储引擎之间,负责将数据从存储引擎读取出来,根据计划将数据处理加工返回给客户端。执行器接收到的指令就是优化器应对SQL查询而翻译出来的关系代数运算符所组成的执行树,一个具体关系运算代数符,我们称之为算子,每个算子有统一的接口,从下层的一个或者多个算子获得输入,然后将运算结果返回给上层算子。原创 2022-09-27 16:19:08 · 2416 阅读 · 32 评论 -
【openGauss数据库内核分析系列】:SQL by pass & 经典执行器
为了加速简单查询,openGauss提出了SQL by pass框架,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,大大加速简单查询的执行速度。原创 2022-08-30 09:48:24 · 1930 阅读 · 43 评论 -
SQL执行计划生成
SQL语句解析完成后被解析成Query结构,在进行优化时是以Query为单位进行的,Query的优化分为基于规则的逻辑优化(查询重写)和基于代价的物理优化(计划生成)。原创 2022-08-19 14:20:39 · 1785 阅读 · 36 评论 -
【openGauss数据库内核分析系列】:统计信息与行数估计
SQL引擎执行查询主要经历了词法语法解析、查询重写、查询规划和计划执行等步骤。目前优化器进行路径的选择主要是基于估算的代价,在代价估算时,需要使用基表或连接表的行数,而在很多时候,优化器无法获得准确的行数值,因此需要对行数进行估算(Cardinality Estimation),然后再计算代价。............原创 2022-06-29 10:36:32 · 1658 阅读 · 39 评论 -
【openGauss数据库内核分析系列】:查询重写
SQL语言是丰富多样的,非常的灵活,不同的开发人员依据经验的不同,手写的SQL语句也是各式各样,另外还可以通过工具自动生成。查询重写就是把用户输入的SQL语句转换为更高效的等价SQL。原创 2022-06-16 09:46:29 · 2762 阅读 · 37 评论 -
openGauss 多线程架构启动过程详解
目录openGauss为什么要使用多线程架构openGauss主要线程有哪些openGauss启动过程gs_ctl启动数据库PostmasterMain函数ServerLoop函数PostgresMain函数思考如何新增一个辅助线程openGauss数据库是一个单进程多线程的数据库,客户端可以使用JDBC/ODBC/Libpq/Psycopg等驱动程序,向openGauss的主线程(Postmaster)发起连接请求。openGauss为什么要使用多线程架构.原创 2022-05-16 10:18:54 · 3584 阅读 · 13 评论 -
从内核代码了解SQL如何解析
在传统数据库中SQL引擎一般指对用户输入的SQL语句进行解析、优化的软件模块。SQL的解析过程主要分为:词法分析:将用户输入的SQL语句拆解成单词(Token)序列,并识别出关键字、标识、常量等。语法分析:分析器对词法分析器解析出来的单词(Token)序列在语法上是否满足SQL语法规则。语义分析:语义分析是SQL解析过程的一个逻辑阶段,主要任务是在语法正确的基础上进行上下文有关性质的审查,在SQL解析过程中该阶段完成表名、操作符、类型等元素的合法性判断,同时检测语义上的二义性...原创 2022-06-09 09:15:31 · 3339 阅读 · 28 评论 -
openGauss简单查询SQL的执行流程解析
上一期酷哥分析了openGauss数据库的启动过程,包括主线程,辅助线程及业务处理线程的启动过程,这一期主要分析简单查询语句在业务处理线程Postgres上的执行流程,并介绍如何利用gdb梳理代码逻辑。原创 2022-06-02 08:59:09 · 3863 阅读 · 41 评论