-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
2、試述查詢優(yōu)化在關(guān)系數(shù)據(jù)庫系統(tǒng)中的重要性 (數(shù)據(jù)庫系統(tǒng)簡答題)
4、數(shù)據(jù)庫系統(tǒng)概論這門課程第九章關(guān)系查詢處理和查詢優(yōu)化的知識點有哪些?
查詢優(yōu)化主要是物理方法的優(yōu)化(查詢優(yōu)化方法有效的是)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于查詢優(yōu)化主要是物理方法的優(yōu)化的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、ClickHouse 21.7.3.14-2(十) 查詢優(yōu)化
Prewhere 和 where 語句的作用相同,用來過濾數(shù)據(jù)。不同之處在于 prewhere 只支持 *MergeTree 族系列引擎的表,首先會讀取指定的列數(shù)據(jù),來判斷數(shù)據(jù)過濾,等待數(shù)據(jù)過濾之后再讀取 select 聲明的列字段來補全其余屬性。
當(dāng)查詢列明顯多于篩選列時使用 Prewhere 可十倍提升查詢性能,Prewhere 會自動優(yōu)化執(zhí)行過濾階段的數(shù)據(jù)讀取方式,降低 io 操作。
在某些場合下,prewhere 語句比 where 語句處理的數(shù)據(jù)量更少性能更高。
默認情況,我們肯定不會關(guān)閉 where 自動優(yōu)化成 prewhere,但是某些場景即使開啟優(yōu)化,也不會自動轉(zhuǎn)換成 prewhere,需要手動指定 prewhere:
通過采樣運算可極大提升數(shù)據(jù)分析的性能
采樣修飾符只有在 MergeTree engine 表中才有效,且在創(chuàng)建表時需要指定采樣策略。
數(shù)據(jù)量太大時應(yīng)避免使用 select * 操作,查詢的性能會與查詢的字段大小和數(shù)量成線性表,換字段越少,消耗的 io 資源越少,性能就會越高。
分區(qū)裁剪就是只讀取需要的分區(qū),在過濾條件中指定。
千萬以上數(shù)據(jù)集進行 order by 查詢時需要搭配 where 條件和 limit 語句一起使用。
如非必須,不要在結(jié)果集上構(gòu)建虛擬列,虛擬列非常消耗資源浪費性能,可以考慮在前端進行處理,或者在表中構(gòu)造實際字段進行額外存儲。
性能可提升 10 倍以上,uniqCombined 底層采用類似 HyperLogLog 算法實現(xiàn),能接受 2%左右的數(shù)據(jù)誤差,可直接使用這種去重方式提升查詢性能。Count(distinct) 會使用 uniqExact 精確去重。
不建議在千萬級不同數(shù)據(jù)上執(zhí)行 distinct 去重查詢,改為近似去重 uniqCombine
為了避免因個別慢查詢引起的服務(wù)雪崩的問題,除了可以為單個查詢設(shè)置超時以外,還可以配置周期熔斷,在一個查詢周期內(nèi),如果用戶頻繁進行慢查詢操作超出規(guī)定閾值后將無法繼續(xù)進行查詢操作。
物理內(nèi)存和虛擬內(nèi)存的數(shù)據(jù)交換,會導(dǎo)致查詢變慢,資源允許的情況下關(guān)閉虛擬內(nèi)存。
為每一個賬戶添加 join_use_nulls 配置,左表中的一條記錄在右表中不存在,右表的相應(yīng)字段會返回該字段相應(yīng)數(shù)據(jù)類型的默認值,而不是標準 SQL 中的 Null 值。
批量寫入數(shù)據(jù)時,必須控制每個批次的數(shù)據(jù)中涉及到的分區(qū)的數(shù)量,在寫入之前最好對需要導(dǎo)入的數(shù)據(jù)進行排序。無序的數(shù)據(jù)或者涉及的分區(qū)太多,會導(dǎo)致 ClickHouse 無法及時對新導(dǎo)入的數(shù)據(jù)進行合并,從而影響查詢性能。
cpu 一般在 50%左右會出現(xiàn)查詢波動,達到 70%會出現(xiàn)大范圍的查詢超時,cpu 是最關(guān)鍵的指標,要非常關(guān)注。
clickhouse的多表關(guān)聯(lián)會把有表的數(shù)據(jù)全部加入到內(nèi)存中,然后左表每條去和內(nèi)存中的數(shù)據(jù)做對比。一旦左表數(shù)據(jù)量過大,容易導(dǎo)致內(nèi)存不夠。
當(dāng)多表聯(lián)查時,查詢的數(shù)據(jù)僅從其中一張表出時,可以考慮用 IN 操作而不是 join。
多表 join 時要滿足 小表在右 的原則,右表關(guān)聯(lián)時被加載到內(nèi)存中與左表進行比較,ClickHouse 中無論是 Left join 、Right join 還是 Inner join 永遠都是拿著右表中的每一條記錄到左表中查找該記錄是否存在,所以右表必須是小表。
ClickHouse 在 join 查詢時不會主動發(fā)起謂詞下推的操作,需要每個子查詢提前完成過濾操作,需要注意的是,是否執(zhí)行謂詞下推,對性能影響差別很大(新版本中已經(jīng)不存在此問題,但是需要注意謂詞的位置的不同依然有性能的差異)
兩張分布式表上的 IN 和 JOIN 之前 必須加上 GLOBAL 關(guān)鍵字 ,右表只會在接收查詢請求的那個節(jié)點查詢一次,并將其分發(fā)到其他節(jié)點上。如果不加 GLOBAL 關(guān)鍵字的話,左分布式表的每個節(jié)點都會單獨發(fā)起一次對右表的查詢,而右表又是分布式表,就導(dǎo)致右表一共會被查詢 N²次(N是該分布式表的分片數(shù)量),這就是查詢放大,會帶來很大開銷。
將一些需要關(guān)聯(lián)分析的業(yè)務(wù)創(chuàng)建成字典表進行 join 操作,前提是字典表不宜太大,因為字典表會常駐內(nèi)存, 官方地址
通過增加邏輯過濾可以減少數(shù)據(jù)掃描,達到提高執(zhí)行速度及降低內(nèi)存消耗的目的
二、試述查詢優(yōu)化在關(guān)系數(shù)據(jù)庫系統(tǒng)中的重要性 (數(shù)據(jù)庫系統(tǒng)簡答題)
查詢優(yōu)化分為數(shù)據(jù)庫性能的優(yōu)化和應(yīng)用程序的優(yōu)化
1)數(shù)據(jù)庫性能的優(yōu)化
一個數(shù)據(jù)庫系統(tǒng)的生命周期可以分成:設(shè)計、開發(fā)和成品三個階段。在設(shè)計階段進行數(shù)據(jù)庫性能優(yōu)化的成本最低,收益最大。在成品階段進行數(shù)據(jù)庫性能優(yōu)化的成本最高,收益最小。
數(shù)據(jù)庫的優(yōu)化通??梢酝ㄟ^對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)和應(yīng)用程序的優(yōu)化來進行。最常見的優(yōu)化手段就是對硬件的升級。根據(jù)統(tǒng)計,對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進行優(yōu)化所獲得的性能提升,全部加起來占數(shù)據(jù)庫系統(tǒng)性能提升的40%左右。
2)應(yīng)用程序的優(yōu)化
應(yīng)用程序的優(yōu)化通??煞譃閮蓚€方面:源代碼和SQL語句。由于涉及到對程序邏輯的改變,源代碼的優(yōu)化在時間成本和風(fēng)險上代價很高,而對數(shù)據(jù)庫系統(tǒng)性能的提升收效有限。 優(yōu)化SQL語句的傳統(tǒng)方法是通過手工重寫來對SQL語句進行優(yōu)化。DBA或資深程序員通過對SQL語句執(zhí)行計劃的分析,依靠經(jīng)驗,嘗試重寫SQL語句,然后對結(jié)果和性能進行比較,以試圖找到性能較佳的SQL語句。這種傳統(tǒng)上的作法無法找出SQL語句的所有可能寫法,且依賴于人的經(jīng)驗,非常耗費時間,但是60%系統(tǒng)性能提升來自對應(yīng)用程序的優(yōu)化。許多優(yōu)化專家認為,對應(yīng)用程序的優(yōu)化可以得到80%的系統(tǒng)性能的提升。
三、數(shù)據(jù)庫查詢有哪些優(yōu)化方面
1 SQL查詢語句的重寫,對于一個查詢可以用多種查詢語句實現(xiàn),但不同查詢語句的數(shù)據(jù)庫執(zhí)行計劃是不同的,一旦不能夠使用索引或造成較大的內(nèi)存占用會導(dǎo)致性能下降,因此需要對查詢語句進行重寫優(yōu)化,最典型的例子就是not in語句使用外連接方式實現(xiàn)來進行優(yōu)化
2 創(chuàng)建合理的索引結(jié)構(gòu),根據(jù)查詢語句的中查詢條件,在關(guān)系表上建立相應(yīng)的索引,如B+樹索引和hash索引
3 修改程序業(yè)務(wù)邏輯,有些功能如果使用SQL語句實現(xiàn),不但SQL語句復(fù)雜,還將導(dǎo)致數(shù)據(jù)庫的負擔(dān)增加,因此可以將有些數(shù)據(jù)操作的業(yè)務(wù)邏輯放到應(yīng)用層進行實現(xiàn),就是通過java編程實現(xiàn)
4 修改數(shù)據(jù)庫服務(wù)器相關(guān)參數(shù),優(yōu)化服務(wù)器性能
四、數(shù)據(jù)庫系統(tǒng)概論這門課程第九章關(guān)系查詢處理和查詢優(yōu)化的知識點有哪些?
數(shù)據(jù)庫系統(tǒng)概論這門課第九章關(guān)系查詢處理和查詢優(yōu)化的知識點包含章節(jié)導(dǎo)引,第一節(jié)關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理,第二節(jié)關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化,第三節(jié)代數(shù)優(yōu)化,第四節(jié)物理優(yōu)化,第五節(jié)小結(jié)與實驗,。
以上就是關(guān)于查詢優(yōu)化主要是物理方法的優(yōu)化相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
抖音關(guān)鍵詞排名查詢接口(抖音關(guān)鍵詞搜索綜合排名)
如何查看別人淘寶店鋪銷量(淘寶大數(shù)據(jù)查詢平臺)
設(shè)計包裝圖案多少錢(設(shè)計包裝圖案多少錢一套)