在上一篇openGauss数据库源码解析系列文章——执行器解析(二)中,介绍了执行器解析中“表达式计算”及“编译执行”的相关内容,本篇将介绍“向量化引擎”的精彩内容。六、向量化引擎传统的行执行引擎大多采用一次一元组的执行模式,这样在执行过程中CPU大部分时间并没有用来处理数据,更多的是在遍历执行树,就会导致CPU的有效利用率较低。而在面对OLAP场景巨量的函数调用次数,需要巨大的开销。为了解决这一问题,op...
2023-05-05 11:20:56 432浏览 0点赞 0回复 0收藏
火山模型执行器各个算子解耦合的基础。对于每个算子来说,只有三步:向自己的孩子拿一个tuple。即调用孩子节点的Next函数;执行计算;向上层返回一个tuple。即当前节点Next函数的返回结果。所以整个执行器的内核可以用下面这个伪代码来表达。ExecutePlan{for(;;)slotExecProcNode(planstate);>if(node>chgParam!NULL)ExecReScan(node);resultgexecProcFuncTable[index](node)表驱动,每个算子不同的执行函数returnresult;if(Tup...
2023-05-05 11:20:12 382浏览 0点赞 0回复 0收藏
上一篇openGauss数据库源码解析系列文章——执行器解析(一)介绍了“执行器整体架构及代码概览”、“执行流程”及“执行算子”的相关内容,本篇将介绍“表达式计算”及“编译执行”的精彩内容。四、表达式计算表达式计算对应的代码源文件是“execQual.cpp”,openGauss处理SQL语句中的函数调用、计算式和条件表达式时需要用到表达式计算。表达式的表示方式和查询计划树的计划节点类似,通过生成表达式计划来对每个表达...
2023-05-05 11:16:21 399浏览 0点赞 0回复 0收藏
执行器在数据库整个体系结构中起到承上启下的作用,对上承接优化器产生的最优执行计划,并按照执行计划进行流水线式的执行,对底层的存储引擎中的数据进行操作。openGauss数据库将执行的过程抽象成了不同类型的算子,同时结合编译执行、向量化执行、并行执行等方式,组成了全面、高效的执行引擎。本篇着重介绍执行器的整体架构、执行模型、各类算子、表达式,以及编译执行和向量化引擎等全新的执行引擎。一、执行器整体架构及代...
2023-05-05 11:15:11 400浏览 0点赞 0回复 0收藏
上篇图文openGauss数据库源码解析系列文章——SQL引擎源码解析(一),从SQL引擎概述和SQL解析两方面进行了详细论述,本篇将接着从SQL引擎的查询优化展开介绍。三、查询优化openGauss数据库的查询优化过程功能比较明晰,从源代码组织的角度来看,相关代码分布在不同的目录下,如表1所示。表1查询优化模块说明模块目录说明查询重写srcgausskerneloptimizerprep主要包括子查询优化、谓词化简及正则化、谓词传递闭包等查询...
2023-05-05 11:12:57 569浏览 0点赞 0回复 0收藏
SQL引擎作为数据库系统的入口,主要承担了对SQL语言进行解析、优化、生成执行计划的作用。对于用户输入的SQL语句,SQL引擎会对语句进行语法语义上的分析以判断是否满足语法规则等,之后会对语句进行优化以便生成最优的执行计划给执行器执行。故SQL引擎在数据库系统中承担着承上启下的作用,是数据库系统的“大脑”。一、概述SQL引擎负责对用户输入的SQL语言进行编译,生成可执行的执行计划,然后将执行计划交给执行引擎进行执行...
2023-05-05 11:10:06 375浏览 0点赞 0回复 0收藏
事务是数据库操作的执行单位,需要满足最基本的ACID(原子性、一致性、隔离性、持久性)属性。(1)原子性:一个事务提交之后要么全部执行,要么全部不执行。(2)一致性:事务的执行不能破坏数据库的完整性和一致性。(3)隔离性:事务的隔离性是指在并发中,一个事务的执行不能被其他事务干扰。(4)持久性:一旦事务完成提交,那么它对数据库的状态变更就会永久保存在数据库中。本篇主要从事务整体架构和代码概览及事务并发...
2023-05-05 11:06:42 587浏览 0点赞 0回复 0收藏
数据库索引可以提高数据的访问速度,openGauss支持唯一索引、多字段索引、部分索引和表达式索引。行存表(ASTORE存储引擎)支持的索引类型:btree(行存表缺省值)、hash、gin、gist。行存表(USTORE存储引擎)支持的索引类型:ubtree。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。全局临时表不支持GIN索引和Gist索引。如上一篇分析数据库表的创建过程,standardProcessUtility函数会根据nodeTag(parset...
2023-05-05 11:00:33 332浏览 0点赞 0回复 0收藏
除了DML之外的所有查询都通过ProcessUtility模块来执行,包括了各类DDL语句、事务相关语句、游标相关语句等。上层调用函数为execsimplequery函数,其中PortalStart函数和PortalDrop函数部分较为简单。核心函数是PortalRun函数下层调用的standardProcessUtility函数,该函数通过switchcase语句处理了各种类型的查询语句,包括事务相关查询、游标相关查询、schema相关操作、表空间相关操作、表定义相关操作等。standardProcessUti...
2023-05-05 11:00:06 324浏览 0点赞 0回复 0收藏
版本:v3.1BetaNativeapi中导出的EGL符号列表更新时间:2023021709:19符号类型符号名备注FUNCeglChooseConfigFUNCeglCopyBuffersFUNCeglCreateContextFUNCeglCreatePbufferSurfaceFUNCeglCreatePixmapSurfaceFUNCeglCreateWindowSurfaceFUNCeglDestroyContextFUNCeglDestroySurfaceFUNCeglGetConfigAttribFUNCeglGetConfigsFUNCeglGetCurrentDisplayFUNCeglGetCurrentSurfaceFUNCeglGetDisplayFUNCeglGetErrorFUNCeglGetProcAddr...
2023-04-17 18:52:37 279浏览 0点赞 0回复 0收藏
版本:v3.1BetaNativeapi中没有导出的符号列表更新时间:2023021709:19符号类型符号名备注OBJECTenvironOBJECTdaylightOBJECTenvironOBJECThookenablehookflagOBJECTlibcmallocdefaultdispatchOBJECTmusllibcglobalsOBJECToptposOBJECToptresetOBJECTprognamefullOBJECTsigngamOBJECTtimezoneOBJECTtznameOBJECTdldebugaddrOBJECTenvironOBJECTfunctionofsharedlibOBJECTherrnoOBJECTohosmallochooksharedliibraryOBJECTprogrami...
2023-04-17 18:52:14 383浏览 0点赞 0回复 0收藏
版本:v3.1BetaNodeAPI更新时间:2023021709:19简介NodeAPI是用于封装JavaScript能力为Native插件的API,独立于底层JavaScript,并作为Node.js的一部分。支持的能力NodeAPI可以去除底层的JavaScript引擎的差异,提供一套稳定的接口。HarmonyOS的NativeAPI组件对NodeAPI的接口进行了重新实现,底层对接了ArkJS等引擎。当前支持NodeAPI标准库中的部分接口。NativeAPI组件扩展的符号列表符号类型符号名备注FUNCnapirunscrip...
2023-04-17 18:51:54 266浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHHuksParamSet更新时间:2023021709:19概述定义参数集的结构体类型。起始版本:9相关模块:HuksTypeApi汇总成员变量名称描述paramSetSize参数集的内存大小。paramsCnt参数的个数。params[]参数数组。结构体成员变量说明paramsstructOHHuksParam描述:参数数组。paramsCntuint32tOHHuksParamSet::paramsCnt描述:参数的个数。paramSetSizeuint32tOHHuksParamSet::paramSetSize描述:...
2023-04-17 18:51:20 246浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHHuksKeyMaterialEcc更新时间:2023021709:19概述定义Ecc密钥的结构体类型。起始版本:9相关模块:HuksTypeApi汇总成员变量名称描述keyAlg密钥的算法类型。keySize密钥的长度。xSizex值的长度。ySizey值的长度。zSizez值的长度。结构体成员变量说明keyAlgenumOHHuksKeyAlg描述:密钥的算法类型。keySizeuint32tOHHuksKeyMaterialEcc::keySize描述:密钥的长度。xSi...
2023-04-17 18:51:07 192浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHHuksKeyMaterial25519更新时间:2023021709:19概述定义25519类型密钥的结构体类型。起始版本:9相关模块:HuksTypeApi汇总成员变量名称描述keyAlg密钥的算法类型。keySize25519类型密钥的长度。pubKeySize公钥的长度。priKeySize私钥的长度。reserved保留。结构体成员变量说明keyAlgenumOHHuksKeyAlg描述:密钥的算法类型。keySizeuint32tOHHuksKeyMaterial25519...
2023-04-17 18:50:52 150浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHAVCodecAsyncCallback更新时间:2023021709:19概述AVCodec所有的异步回调函数指针集合。注册一个该结构体实例给OHAVCodec实例,并处理通过该回调报告的信息,以确保AVCodec正常运转。syscapSystemCapability.Multimedia.Media.CodecBase参数起始版本:9相关模块:CodecBase汇总成员变量名称描述onError监听AVCodec运行错误,参考OHAVCodecOnErroronStreamChanged监听编解码流信息,参考OHAVC...
2023-04-17 18:50:35 183浏览 0点赞 0回复 0收藏
版本:v3.1BetaOhosPixelMapInfo更新时间:2023021709:19概述用于定义pixelmap的相关信息。起始版本:8相关模块:Image汇总成员变量成员变量名称描述width图片的高,用pixels表示。heightPixel的格式。rowSize每行的bytes数。pixelFormat图片的宽,用pixels表示。结构体成员变量说明heightuint32tOhosPixelMapInfo::height描述:图片的高,用pixels表示。pixelFormatint32tOhosPixelMap...
2023-04-17 18:50:12 228浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHNativeXComponentTouchEvent更新时间:2023021709:19概述触摸事件。起始版本:8相关模块:NativeXComponent汇总成员变量成员变量名称描述id0手指的唯一标识符。screenX0.0触摸点相对于应用窗口左上角的x坐标。screenY0.0触摸点相对于应用窗口左上角的y坐标。x0.0触摸点相对于XComponent组件左边缘的x坐标。y0.0触摸点相对于XComponent组件上边缘的y坐标。t...
2023-04-17 18:49:52 233浏览 0点赞 0回复 0收藏
版本:v3.1BetaOHDrawingBitmapFormat更新时间:2023021709:19概述结构体用于描述位图像素的格式,包括颜色类型和透明度类型起始版本:8相关模块:Drawing汇总成员变量成员变量名称描述colorFormat描述位图像素的透明度分量alphaFormat描述位图像素的存储格式结构体成员变量说明alphaFormatOHDrawingAlphaFormatOHDrawingBitmapFormat::alphaFormat描述:描述位图像素的透明度分量colorFormatOHDrawingC...
2023-04-17 18:43:43 222浏览 0点赞 0回复 0收藏
版本:v3.1Betanativehuksapi.h更新时间:2023021709:19概述声明用于访问HUKS的API。起始版本:9相关模块:HuksKeyApi汇总函数名称描述OHHuksGetSdkVersion(structOHHuksBlobsdkVersion)获取当前Hukssdk版本号。OHHuksGenerateKeyItem(conststructOHHuksBlobkeyAlias,conststructOHHuksParamSetparamSetIn,structOHHuksParamSetparamSetOut)生成密钥。OHHuk...
2023-04-14 17:03:55 684浏览 0点赞 0回复 0收藏