openGauss學(xué)習(xí)筆記-247 openGauss性能調(diào)優(yōu)-SQL調(diào)優(yōu)關(guān)鍵參數(shù)調(diào)整

openGauss學(xué)習(xí)筆記-247 openGauss性能調(diào)優(yōu)-SQL調(diào)優(yōu)關(guān)鍵參數(shù)調(diào)整247.1 SQL調(diào)優(yōu)關(guān)鍵參數(shù)調(diào)整

openGauss學(xué)習(xí)筆記-247 openGauss性能調(diào)優(yōu)-SQL調(diào)優(yōu)關(guān)鍵參數(shù)調(diào)整

247.1 SQL調(diào)優(yōu)關(guān)鍵參數(shù)調(diào)整

本節(jié)將介紹影響openGauss SQL調(diào)優(yōu)性能的關(guān)鍵數(shù)據(jù)庫主節(jié)點(diǎn)配置參數(shù),配置方法參見配置運(yùn)行參數(shù)。

表 1 數(shù)據(jù)庫主節(jié)點(diǎn)配置參數(shù)

參數(shù)/參考值 描述
enable_nestloop=on 控制查詢優(yōu)化器對嵌套循環(huán)連接(Nest Loop Join)類型的使用。當(dāng)設(shè)置為“on”后,優(yōu)化器優(yōu)先使用Nest Loop Join;當(dāng)設(shè)置為“off”后,優(yōu)化器在存在其他方法時(shí)將優(yōu)先選擇其他方法。說明:如果只需要在當(dāng)前數(shù)據(jù)庫連接(即當(dāng)前Session)中臨時(shí)更改該參數(shù)值,則只需要在SQL語句中執(zhí)行如下命令:SET enable_nestloop to off;此參數(shù)默認(rèn)設(shè)置為“on”,但實(shí)際調(diào)優(yōu)中應(yīng)根據(jù)情況選擇是否關(guān)閉。一般情況下,在三種join方式(Nested Loop、Merge Join和Hash Join)里,Nested Loop性能較差,實(shí)際調(diào)優(yōu)中可以選擇關(guān)閉。
enable_bitmapscan=on 控制查詢優(yōu)化器對位圖掃描規(guī)劃類型的使用。設(shè)置為“on”,表示使用;設(shè)置為“off”,表示不使用。說明:如果只需要在當(dāng)前數(shù)據(jù)庫連接(即當(dāng)前Session)中臨時(shí)更改該參數(shù)值,則只需要在SQL語句中執(zhí)行命令如下命令:SET enable_bitmapscan to off;bitmapscan掃描方式適用于“where a > 1 and b > 1”且a列和b列都有索引這種查詢條件,但有時(shí)其性能不如indexscan。因此,現(xiàn)場調(diào)優(yōu)如發(fā)現(xiàn)查詢性能較差且計(jì)劃中有bitmapscan算子,可以關(guān)閉bitmapscan,看性能是否有提升。
enable_hashagg=on 控制優(yōu)化器對Hash聚集規(guī)劃類型的使用。
enable_hashjoin=on 控制優(yōu)化器對Hash連接規(guī)劃類型的使用。
enable_mergejoin=on 控制優(yōu)化器對融合連接規(guī)劃類型的使用。
enable_indexscan=on 控制優(yōu)化器對索引掃描規(guī)劃類型的使用。
enable_indexonlyscan=on 控制優(yōu)化器對僅索引掃描規(guī)劃類型的使用。
enable_seqscan=on 控制優(yōu)化器對順序掃描規(guī)劃類型的使用。完全消除順序掃描是不可能的,但是關(guān)閉這個(gè)變量會讓優(yōu)化器在存在其他方法的時(shí)候優(yōu)先選擇其他方法。
enable_sort=on 控制優(yōu)化器使用的排序步驟。該設(shè)置不可能完全消除明確的排序,但是關(guān)閉這個(gè)變量可以讓優(yōu)化器在存在其他方法的時(shí)候優(yōu)先選擇其他方法。
rewrite_rule 控制優(yōu)化器是否啟用LAZY_AGG和MAGIC_SET重寫規(guī)則。
sql_beta_feature 控制優(yōu)化器是否啟用。SEL_SEMI_POISSON/SEL_EXPR_INSTR/PARAM_PATH_GEN/RAND_COST_OPT/PAGE_EST_OPT/PARAM_PATH_OPT/NO_UNIQUE_INDEX_FIRST/JOIN_SEL_WITH_CAST_FUNC/CANONICAL_PATHKEY/INDEX_COST_WITH_LEAF_PAGES_ONLY/PARTITION_OPFUSION/A_STYLE_COERCE/PLPGSQL_STREAM_FETCHALL/PREDPUSH_SAME_LEVEL/PARTITION_FDW_ON/DISABLE_BITMAP_COST_WITH_LOSSY_PAGES/EXTRACT_PUSHDOWN_OR_CLAUSE測試功能。
var_eq_const_selectivity 控制優(yōu)化器是否使用直方圖計(jì)算整型常量的選擇率。
partition_page_estimation 控制分區(qū)表頁面是否通過剪枝結(jié)果進(jìn)行頁面估算優(yōu)化,只包括分區(qū)表和local索引頁面,不包括全局索引頁面。估算公式為:估算后頁面 = 分區(qū)表總頁面 * (剪枝后分區(qū)數(shù) / 總分區(qū)數(shù))。
partition_iterator_elimination 控制分區(qū)表在分區(qū)剪枝結(jié)果為一個(gè)分區(qū)時(shí),是否通過消除分區(qū)迭代算子來提升執(zhí)行效率。
enable_functional_dependency 控制函數(shù)依賴統(tǒng)計(jì)信息的使用。設(shè)置為“on”,開啟兩個(gè)功能:執(zhí)行ANALYZE生成的多列統(tǒng)計(jì)信息包含函數(shù)依賴統(tǒng)計(jì)信息。計(jì)算選擇率會使用函數(shù)依賴統(tǒng)計(jì)信息。設(shè)置為“off”,此兩個(gè)功能不生效:執(zhí)行ANALYZE生成的多列統(tǒng)計(jì)信息不包含函數(shù)依賴統(tǒng)計(jì)信息。計(jì)算選擇率不會使用函數(shù)依賴統(tǒng)計(jì)信息。說明:函數(shù)依賴(Functional Dependency)的概念來自于關(guān)系數(shù)據(jù)庫范式(Normal Form),表示屬性間的函數(shù)關(guān)系。函數(shù)依賴統(tǒng)計(jì)信息,對此概念進(jìn)行了擴(kuò)展,表示滿足函數(shù)關(guān)系的數(shù)據(jù)量占總數(shù)據(jù)量的比例。函數(shù)依賴統(tǒng)計(jì)信息是多列統(tǒng)計(jì)信息的一種,可以用于提升選擇率估算的準(zhǔn)確率。函數(shù)依賴統(tǒng)計(jì)信息適用于形如“where a = 1 and b = 1”的格式,要求a和b均是同一個(gè)表的屬性,約束條件為等式約束,約束條件用AND連接,約束條件至少為兩個(gè)。
enable_seqscan_fusion 控制seqscan底噪消除是否打開。

?? 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!

?? 收藏,你的青睞是我努力的方向!

?? 評論,你的意見是我進(jìn)步的財(cái)富!

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容