PostgreSQL查詢代價估算(五)

2021-07-28 11:12:16 字數 1227 閱讀 7758

1.1.1.1   

巢狀迴圈的代價:final_cost_nestloop

函式功能:

計算兩個關係使用巢狀迴圈連線演算法的花費。內外表的元組數決定著cpu的花費。

對於nestloop花費的計算,分為兩個函式:

1.         一是initial_cost_ nestloop函式,初步估計nestloop演算法的花費,形成的結果會作為final_cost_nestloop的入口引數(joincostworkspace *workspace)傳入final_cost_nestloop函式;

2.         二是final_cost_nestloop函式,對nestloop演算法的花費進行計算,區分了半連線、反半連線和其他連線型別的差別。

**分析:

void

final_cost_nestloop(plannerinfo *root, nestpath *path,

joincostworkspace *workspace,

specialjoininfo *sjinfo,

semiantijoinfactors *semifactors)

else

}else //

內連線,外表和內錶的元組都要進行連線

//計算cpu花費

cost_qual_eval(&restrict_qual_cost, path->joinrestrictinfo, root);

startup_cost += restrict_qual_cost.startup;

cpu_per_tuple = cpu_tuple_cost + restrict_qual_cost.per_tuple;

run_cost += cpu_per_tuple * ntuples;//內外表的元組數決定著cpu的花費

path->path.startup_cost = startup_cost;

path->path.total_cost = startup_cost + run_cost; }

呼叫關係**:

1.        

final_cost_nestloop函式被create_nestloop_path函式呼叫,直至被add_paths_to_joinrel函式呼叫,完成兩表連線的nestloop連線演算法的花費估算。

PostgreSQL查詢代價估算(一)

postgresql查詢優化代價估算基於cpu開銷和io開銷,計算公式為 總代價 啟動代價 i o代價 cpu代價 cost s p w t 1.p為計畫執行的時訪問的頁數,反映了i o花費 2.t為訪問的元組數,反映了cpu花費 儲存層是以頁面為單位,資料以頁面的形式被讀入記憶體,每個頁面上可能有...

postgresql分頁查詢

資料庫中存了3000w條資料,兩種分頁查詢測試時間 第一種select from test table where i id 1000 limit 100 time 0.016s 第二種select from test table limit 100 offset 1000 time 0.003s ...

PostgreSQL實用查詢SQL

參考 postgresql實用查詢sql 檢視 資料庫 www.2cto.com select from pg database 檢視表空間 select from pg tablespace 檢視語言 select from pg language 檢視角色使用者 select from pg u...