終于要迎來postgresql的《A Tour of PostgreSQL Internals》系列的最后一篇了。學(xué)習(xí)是不能拖延的事兒,越拖延事情越多。不廢話,一起來看看吧~
View 3 Postgresql的查詢處理
還是先上圖吧。下面這張圖從整體上概括了Postgresql的查詢處理的步驟以及牽涉到的各個(gè)模塊。
其中最重要的關(guān)鍵的兩個(gè)數(shù)據(jù)結(jié)構(gòu)是查詢分析樹(parse tree),和查詢計(jì)劃樹(plan tree)。
對(duì)上圖所標(biāo)示的四個(gè)模塊,下面一一來分析。
3.1 Parser(查詢分析模塊)
該模塊通過對(duì)SQL語句進(jìn)行分析生成查詢樹。
查詢分析是查詢編譯的第一個(gè)模塊,包括詞法分析、語法分析和語義分析。它將用戶輸入的SQL語句進(jìn)行詞法分析(使用Lex工具)和語法分析(Yacc工具)生成分析樹,然后進(jìn)行語義分析得到查詢樹(parse tree)。
查詢樹中有幾個(gè)重要的屬性: