下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當(dāng)前位置:軟件下載吧 > 技術(shù)開(kāi)發(fā) > 數(shù)據(jù)庫(kù) > Postgres中UPDATE更新語(yǔ)句源碼分析

          Postgres中UPDATE更新語(yǔ)句源碼分析

          時(shí)間:2024-02-03 17:42作者:下載吧人氣:31

          PG中UPDATE源碼分析

          本文主要描述SQL中UPDATE語(yǔ)句的源碼分析,代碼為PG13.3版本。

          整體流程分析

          update dtea set id = 1;這條最簡(jiǎn)單的Update語(yǔ)句進(jìn)行源碼分析(dtea不是分區(qū)表,不考慮并行等,沒(méi)有建立任何索引),幫助我們理解update的大致流程。

          SQL流程如下:

          • parser(語(yǔ)法解析,生成語(yǔ)法解析樹(shù)UpdateStmt,檢查是否有語(yǔ)法層面的錯(cuò)誤)

          • analyze(語(yǔ)義分析, UpdateStmt轉(zhuǎn)為查詢樹(shù)Query, 會(huì)查系統(tǒng)表檢查有無(wú)語(yǔ)義方面的錯(cuò)誤)

          • rewrite(規(guī)則重寫(xiě), 根據(jù)規(guī)則rules重寫(xiě)查詢樹(shù)Query, 根據(jù)事先存儲(chǔ)在系統(tǒng)表中的規(guī)則進(jìn)行重寫(xiě),沒(méi)有的話不進(jìn)行重寫(xiě),另外加一句,視圖的實(shí)現(xiàn)是根據(jù)規(guī)則系統(tǒng)實(shí)現(xiàn)的,也是在這里需要進(jìn)行處理)

          • optimizer(優(yōu)化器:邏輯優(yōu)化、物理優(yōu)化、生成執(zhí)行計(jì)劃, 由Query生成對(duì)應(yīng)的執(zhí)行計(jì)劃PlannedStmt, 基于代價(jià)的優(yōu)化器,由最佳路徑Path生成最佳執(zhí)行計(jì)劃Plan)

          • executor(執(zhí)行器,會(huì)有各種算子,依據(jù)執(zhí)行計(jì)劃進(jìn)行處理,火山模型,一次一元組)

          • storage(存儲(chǔ)引擎)。中間還有事務(wù)處理。事務(wù)處理部分的代碼這里不再進(jìn)行分析,免得將問(wèn)題復(fù)雜化。存儲(chǔ)引擎那部分也不進(jìn)行分析,重點(diǎn)關(guān)注解析、優(yōu)化、執(zhí)行這三部分。

          對(duì)應(yīng)的代碼:

          exec_simple_query(const?char?*query_string)
          //?——-?解析器部分————–
          –>?pg_parse_query(query_string);????//生成語(yǔ)法解析樹(shù)
          –>?pg_analyze_and_rewrite(parsetree,?query_string,NULL,?0,?NULL);???//?生成查詢樹(shù)Query
          ????–>?parse_analyze(parsetree,?query_string,?paramTypes,?numParams,queryEnv);?//?語(yǔ)義分析
          ????–>?pg_rewrite_query(query);????//?規(guī)則重寫(xiě)

          //?——–優(yōu)化器———-
          –>?pg_plan_queries()

          //——–?執(zhí)行器———-
          –>?PortalStart(portal,?NULL,?0,?InvalidSnapshot);
          –>?PortalRun(portal,FETCH_ALL,true,true,receiver,receiver,&qc);????//?執(zhí)行器執(zhí)行
          –>?PortalDrop(portal,?false);

          標(biāo)簽MySQL,技術(shù)文檔,數(shù)據(jù)庫(kù),PostgreSQL

          相關(guān)下載

          查看所有評(píng)論+

          網(wǎng)友評(píng)論

          網(wǎng)友
          您的評(píng)論需要經(jīng)過(guò)審核才能顯示

          熱門(mén)閱覽

          最新排行

          公眾號(hào)

          主站蜘蛛池模板: 国产一区二区在线视频| 久久一区二区三区精品| 国产中文字幕一区| 国产在线一区二区视频| 无码人妻精品一区二区蜜桃AV| 精品中文字幕一区在线| 亚洲中文字幕丝袜制服一区| 国产一区二区三区高清视频 | 亚洲熟妇AV一区二区三区宅男| 亚州AV综合色区无码一区| 国产精品亚洲一区二区三区| 中文字幕一区视频一线| 亚洲av无码不卡一区二区三区| 中文字幕AV一区二区三区人妻少妇 | 在线免费视频一区二区| 精品一区精品二区| 亚洲国产成人一区二区精品区| 亚洲av无码成人影院一区| 美女视频一区二区三区| 色狠狠一区二区三区香蕉| 国产乱人伦精品一区二区在线观看 | 亚洲AV日韩综合一区尤物| 精品一区二区三区电影| 日韩精品区一区二区三VR| 国产伦精品一区二区三区在线观看| 久久婷婷色综合一区二区| 日韩最新视频一区二区三| 国产一区二区三区不卡在线观看| 国产精品伦一区二区三级视频| 日本免费一区尤物| 亚洲国产国产综合一区首页| 波多野结衣中文一区| 亚洲福利一区二区| 亚洲熟女一区二区三区| 日本一区二区三区在线观看视频| 无码精品人妻一区二区三区漫画| 男人的天堂亚洲一区二区三区| 亚洲美女一区二区三区| 色妞AV永久一区二区国产AV| 性色AV一区二区三区无码| 中文字幕一区视频|