五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

openGauss內(nèi)核分析(二):簡單查詢的執(zhí)行

2022-06-09 10:15 作者:Gauss松鼠會  | 我要投稿

上一期酷哥分析了openGauss數(shù)據(jù)庫的啟動(dòng)過程,包括主線程,輔助線程及業(yè)務(wù)處理線程的啟動(dòng)過程,這一期主要分析簡單查詢語句在業(yè)務(wù)處理線程Postgres上的執(zhí)行流程,并介紹如何利用gdb梳理代碼邏輯。

???簡單查詢的執(zhí)行

SQL引擎是數(shù)據(jù)庫系統(tǒng)的入口,執(zhí)行用戶簡單查詢的入口函數(shù)是exec_simple_query。運(yùn)行在業(yè)務(wù)處理線程Postgres。

通??梢园裇QL引擎分成SQL解析和查詢優(yōu)化兩個(gè)主要的模塊,SQL引擎對輸入的SQL語言進(jìn)行詞法分析、語法分析、語義分析,從而生成邏輯執(zhí)行計(jì)劃,邏輯執(zhí)行計(jì)劃經(jīng)過代數(shù)優(yōu)化和代價(jià)優(yōu)化之后,產(chǎn)生物理執(zhí)行計(jì)劃。

在SQL引擎將用戶的查詢解析優(yōu)化成可執(zhí)行的計(jì)劃之后,數(shù)據(jù)庫進(jìn)入查詢執(zhí)行階段。執(zhí)行器基于執(zhí)行計(jì)劃對相關(guān)數(shù)據(jù)進(jìn)行提取、運(yùn)算、更新、刪除等操作,以達(dá)到用戶查詢想要實(shí)現(xiàn)的目的。


???exec_simple_query



1.start_xact_command():開始一個(gè)事務(wù)。

2.pg_parse_query():對查詢語句進(jìn)行詞法和語法分析,生成一個(gè)或者多個(gè)初始的語法分析樹。

3. 進(jìn)入foreach (parsetree_item, parsetree_list)循環(huán),對每個(gè)語法分析樹執(zhí)行查詢。

4. pg_analyze_and_rewrite():根據(jù)語法分析樹生成基于Query數(shù)據(jù)結(jié)構(gòu)的邏輯查詢樹,并進(jìn)行重寫等操作。

5. pg_plan_queries():對邏輯查詢樹進(jìn)行優(yōu)化,生成查詢計(jì)劃。

6. CreatePortal():創(chuàng)建Portal, Portal是執(zhí)行SQL語句的載體,每一條SQL對應(yīng)唯一的Portal。

7. PortalStart():負(fù)責(zé)進(jìn)行Portal結(jié)構(gòu)體初始化工作,包括執(zhí)行算子初始化、內(nèi)存上下文分配等。

8. PortalRun():負(fù)責(zé)真正的執(zhí)行和運(yùn)算,它是執(zhí)行器的核心。

9. PortalDrop():負(fù)責(zé)最后的清理工作,主要是數(shù)據(jù)結(jié)構(gòu)、緩存的清理。

10. finish_xact_command():完成事務(wù)提交。

11. EndCommand():通知客戶端查詢執(zhí)行完成。

???gdb調(diào)試

調(diào)試需要用到符號信息,configure使用如下命令

gdb attach 進(jìn)程號,這里進(jìn)程號為17012

info threads查看所有線程,t 線程號切換線程,bt可以查看線程調(diào)用棧。

也可以使用linux工具gstack 打印函數(shù)調(diào)用棧。

以調(diào)試select語句為例,gdb attach?進(jìn)程號,在exec_simple_query打上斷點(diǎn),執(zhí)行select語句即可開始調(diào)試


openGauss內(nèi)核分析(二):簡單查詢的執(zhí)行的評論 (共 條)

分享到微博請遵守國家法律
深圳市| 常山县| 延安市| 霍邱县| 禹州市| 富蕴县| 安宁市| 纳雍县| 牟定县| 扶绥县| 长汀县| 中阳县| 盐池县| 江川县| 信宜市| 肥东县| 凉城县| 墨竹工卡县| 杨浦区| 城市| 大邑县| 信阳市| 长宁区| 南投县| 崇州市| 德清县| 宁陕县| 夏邑县| 象州县| 岳普湖县| 张家界市| 法库县| 游戏| 伊川县| 汉沽区| 浦北县| 涞源县| 利辛县| 始兴县| 曲靖市| 巴塘县|