HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專(zhuān)注品牌策劃15年

    查詢(xún)優(yōu)化主要是物理方法的優(yōu)化(查詢(xún)優(yōu)化方法有效的是)

    發(fā)布時(shí)間:2023-04-13 13:24:05     稿源: 創(chuàng)意嶺    閱讀: 138        

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于查詢(xún)優(yōu)化主要是物理方法的優(yōu)化的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話(huà)答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線(xiàn)網(wǎng)頁(yè)版、PC客戶(hù)端

    官網(wǎng):https://ai.de1919.com

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶(hù)遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話(huà)175-8598-2043,或添加微信:1454722008

    本文目錄:

    查詢(xún)優(yōu)化主要是物理方法的優(yōu)化(查詢(xún)優(yōu)化方法有效的是)

    一、ClickHouse 21.7.3.14-2(十) 查詢(xún)優(yōu)化

    Prewhere 和 where 語(yǔ)句的作用相同,用來(lái)過(guò)濾數(shù)據(jù)。不同之處在于 prewhere 只支持 *MergeTree 族系列引擎的表,首先會(huì)讀取指定的列數(shù)據(jù),來(lái)判斷數(shù)據(jù)過(guò)濾,等待數(shù)據(jù)過(guò)濾之后再讀取 select 聲明的列字段來(lái)補(bǔ)全其余屬性。

    當(dāng)查詢(xún)列明顯多于篩選列時(shí)使用 Prewhere 可十倍提升查詢(xún)性能,Prewhere 會(huì)自動(dòng)優(yōu)化執(zhí)行過(guò)濾階段的數(shù)據(jù)讀取方式,降低 io 操作。

    在某些場(chǎng)合下,prewhere 語(yǔ)句比 where 語(yǔ)句處理的數(shù)據(jù)量更少性能更高。

    默認(rèn)情況,我們肯定不會(huì)關(guān)閉 where 自動(dòng)優(yōu)化成 prewhere,但是某些場(chǎng)景即使開(kāi)啟優(yōu)化,也不會(huì)自動(dòng)轉(zhuǎn)換成 prewhere,需要手動(dòng)指定 prewhere:

    通過(guò)采樣運(yùn)算可極大提升數(shù)據(jù)分析的性能

    采樣修飾符只有在 MergeTree engine 表中才有效,且在創(chuàng)建表時(shí)需要指定采樣策略。

    數(shù)據(jù)量太大時(shí)應(yīng)避免使用 select * 操作,查詢(xún)的性能會(huì)與查詢(xún)的字段大小和數(shù)量成線(xiàn)性表,換字段越少,消耗的 io 資源越少,性能就會(huì)越高。

    分區(qū)裁剪就是只讀取需要的分區(qū),在過(guò)濾條件中指定。

    千萬(wàn)以上數(shù)據(jù)集進(jìn)行 order by 查詢(xún)時(shí)需要搭配 where 條件和 limit 語(yǔ)句一起使用。

    如非必須,不要在結(jié)果集上構(gòu)建虛擬列,虛擬列非常消耗資源浪費(fèi)性能,可以考慮在前端進(jìn)行處理,或者在表中構(gòu)造實(shí)際字段進(jìn)行額外存儲(chǔ)。

    性能可提升 10 倍以上,uniqCombined 底層采用類(lèi)似 HyperLogLog 算法實(shí)現(xiàn),能接受 2%左右的數(shù)據(jù)誤差,可直接使用這種去重方式提升查詢(xún)性能。Count(distinct) 會(huì)使用 uniqExact 精確去重。

    不建議在千萬(wàn)級(jí)不同數(shù)據(jù)上執(zhí)行 distinct 去重查詢(xún),改為近似去重 uniqCombine

    為了避免因個(gè)別慢查詢(xún)引起的服務(wù)雪崩的問(wèn)題,除了可以為單個(gè)查詢(xún)?cè)O(shè)置超時(shí)以外,還可以配置周期熔斷,在一個(gè)查詢(xún)周期內(nèi),如果用戶(hù)頻繁進(jìn)行慢查詢(xún)操作超出規(guī)定閾值后將無(wú)法繼續(xù)進(jìn)行查詢(xún)操作。

    物理內(nèi)存和虛擬內(nèi)存的數(shù)據(jù)交換,會(huì)導(dǎo)致查詢(xún)變慢,資源允許的情況下關(guān)閉虛擬內(nèi)存。

    為每一個(gè)賬戶(hù)添加 join_use_nulls 配置,左表中的一條記錄在右表中不存在,右表的相應(yīng)字段會(huì)返回該字段相應(yīng)數(shù)據(jù)類(lèi)型的默認(rèn)值,而不是標(biāo)準(zhǔn) SQL 中的 Null 值。

    批量寫(xiě)入數(shù)據(jù)時(shí),必須控制每個(gè)批次的數(shù)據(jù)中涉及到的分區(qū)的數(shù)量,在寫(xiě)入之前最好對(duì)需要導(dǎo)入的數(shù)據(jù)進(jìn)行排序。無(wú)序的數(shù)據(jù)或者涉及的分區(qū)太多,會(huì)導(dǎo)致 ClickHouse 無(wú)法及時(shí)對(duì)新導(dǎo)入的數(shù)據(jù)進(jìn)行合并,從而影響查詢(xún)性能。

    cpu 一般在 50%左右會(huì)出現(xiàn)查詢(xún)波動(dòng),達(dá)到 70%會(huì)出現(xiàn)大范圍的查詢(xún)超時(shí),cpu 是最關(guān)鍵的指標(biāo),要非常關(guān)注。

    clickhouse的多表關(guān)聯(lián)會(huì)把有表的數(shù)據(jù)全部加入到內(nèi)存中,然后左表每條去和內(nèi)存中的數(shù)據(jù)做對(duì)比。一旦左表數(shù)據(jù)量過(guò)大,容易導(dǎo)致內(nèi)存不夠。

    當(dāng)多表聯(lián)查時(shí),查詢(xún)的數(shù)據(jù)僅從其中一張表出時(shí),可以考慮用 IN 操作而不是 join。

    多表 join 時(shí)要滿(mǎn)足 小表在右 的原則,右表關(guān)聯(lián)時(shí)被加載到內(nèi)存中與左表進(jìn)行比較,ClickHouse 中無(wú)論是 Left join 、Right join 還是 Inner join 永遠(yuǎn)都是拿著右表中的每一條記錄到左表中查找該記錄是否存在,所以右表必須是小表。

    ClickHouse 在 join 查詢(xún)時(shí)不會(huì)主動(dòng)發(fā)起謂詞下推的操作,需要每個(gè)子查詢(xún)提前完成過(guò)濾操作,需要注意的是,是否執(zhí)行謂詞下推,對(duì)性能影響差別很大(新版本中已經(jīng)不存在此問(wèn)題,但是需要注意謂詞的位置的不同依然有性能的差異)

    兩張分布式表上的 IN 和 JOIN 之前 必須加上 GLOBAL 關(guān)鍵字 ,右表只會(huì)在接收查詢(xún)請(qǐng)求的那個(gè)節(jié)點(diǎn)查詢(xún)一次,并將其分發(fā)到其他節(jié)點(diǎn)上。如果不加 GLOBAL 關(guān)鍵字的話(huà),左分布式表的每個(gè)節(jié)點(diǎn)都會(huì)單獨(dú)發(fā)起一次對(duì)右表的查詢(xún),而右表又是分布式表,就導(dǎo)致右表一共會(huì)被查詢(xún) N²次(N是該分布式表的分片數(shù)量),這就是查詢(xún)放大,會(huì)帶來(lái)很大開(kāi)銷(xiāo)。

    將一些需要關(guān)聯(lián)分析的業(yè)務(wù)創(chuàng)建成字典表進(jìn)行 join 操作,前提是字典表不宜太大,因?yàn)樽值浔頃?huì)常駐內(nèi)存, 官方地址

    通過(guò)增加邏輯過(guò)濾可以減少數(shù)據(jù)掃描,達(dá)到提高執(zhí)行速度及降低內(nèi)存消耗的目的

    二、試述查詢(xún)優(yōu)化在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的重要性 (數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)答題)

    查詢(xún)優(yōu)化分為數(shù)據(jù)庫(kù)性能的優(yōu)化和應(yīng)用程序的優(yōu)化

    1)數(shù)據(jù)庫(kù)性能的優(yōu)化

    一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的生命周期可以分成:設(shè)計(jì)、開(kāi)發(fā)和成品三個(gè)階段。在設(shè)計(jì)階段進(jìn)行數(shù)據(jù)庫(kù)性能優(yōu)化的成本最低,收益最大。在成品階段進(jìn)行數(shù)據(jù)庫(kù)性能優(yōu)化的成本最高,收益最小。

    數(shù)據(jù)庫(kù)的優(yōu)化通??梢酝ㄟ^(guò)對(duì)網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)參數(shù)和應(yīng)用程序的優(yōu)化來(lái)進(jìn)行。最常見(jiàn)的優(yōu)化手段就是對(duì)硬件的升級(jí)。根據(jù)統(tǒng)計(jì),對(duì)網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)參數(shù)進(jìn)行優(yōu)化所獲得的性能提升,全部加起來(lái)占數(shù)據(jù)庫(kù)系統(tǒng)性能提升的40%左右。

    2)應(yīng)用程序的優(yōu)化

    應(yīng)用程序的優(yōu)化通??煞譃閮蓚€(gè)方面:源代碼和SQL語(yǔ)句。由于涉及到對(duì)程序邏輯的改變,源代碼的優(yōu)化在時(shí)間成本和風(fēng)險(xiǎn)上代價(jià)很高,而對(duì)數(shù)據(jù)庫(kù)系統(tǒng)性能的提升收效有限。 優(yōu)化SQL語(yǔ)句的傳統(tǒng)方法是通過(guò)手工重寫(xiě)來(lái)對(duì)SQL語(yǔ)句進(jìn)行優(yōu)化。DBA或資深程序員通過(guò)對(duì)SQL語(yǔ)句執(zhí)行計(jì)劃的分析,依靠經(jīng)驗(yàn),嘗試重寫(xiě)SQL語(yǔ)句,然后對(duì)結(jié)果和性能進(jìn)行比較,以試圖找到性能較佳的SQL語(yǔ)句。這種傳統(tǒng)上的作法無(wú)法找出SQL語(yǔ)句的所有可能寫(xiě)法,且依賴(lài)于人的經(jīng)驗(yàn),非常耗費(fèi)時(shí)間,但是60%系統(tǒng)性能提升來(lái)自對(duì)應(yīng)用程序的優(yōu)化。許多優(yōu)化專(zhuān)家認(rèn)為,對(duì)應(yīng)用程序的優(yōu)化可以得到80%的系統(tǒng)性能的提升。

    三、數(shù)據(jù)庫(kù)查詢(xún)有哪些優(yōu)化方面

    1 SQL查詢(xún)語(yǔ)句的重寫(xiě),對(duì)于一個(gè)查詢(xún)可以用多種查詢(xún)語(yǔ)句實(shí)現(xiàn),但不同查詢(xún)語(yǔ)句的數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃是不同的,一旦不能夠使用索引或造成較大的內(nèi)存占用會(huì)導(dǎo)致性能下降,因此需要對(duì)查詢(xún)語(yǔ)句進(jìn)行重寫(xiě)優(yōu)化,最典型的例子就是not in語(yǔ)句使用外連接方式實(shí)現(xiàn)來(lái)進(jìn)行優(yōu)化

    2 創(chuàng)建合理的索引結(jié)構(gòu),根據(jù)查詢(xún)語(yǔ)句的中查詢(xún)條件,在關(guān)系表上建立相應(yīng)的索引,如B+樹(shù)索引和hash索引

    3 修改程序業(yè)務(wù)邏輯,有些功能如果使用SQL語(yǔ)句實(shí)現(xiàn),不但SQL語(yǔ)句復(fù)雜,還將導(dǎo)致數(shù)據(jù)庫(kù)的負(fù)擔(dān)增加,因此可以將有些數(shù)據(jù)操作的業(yè)務(wù)邏輯放到應(yīng)用層進(jìn)行實(shí)現(xiàn),就是通過(guò)java編程實(shí)現(xiàn)

    4 修改數(shù)據(jù)庫(kù)服務(wù)器相關(guān)參數(shù),優(yōu)化服務(wù)器性能

    四、數(shù)據(jù)庫(kù)系統(tǒng)概論這門(mén)課程第九章關(guān)系查詢(xún)處理和查詢(xún)優(yōu)化的知識(shí)點(diǎn)有哪些?

    數(shù)據(jù)庫(kù)系統(tǒng)概論這門(mén)課第九章關(guān)系查詢(xún)處理和查詢(xún)優(yōu)化的知識(shí)點(diǎn)包含章節(jié)導(dǎo)引,第一節(jié)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢(xún)處理,第二節(jié)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢(xún)優(yōu)化,第三節(jié)代數(shù)優(yōu)化,第四節(jié)物理優(yōu)化,第五節(jié)小結(jié)與實(shí)驗(yàn),。

    以上就是關(guān)于查詢(xún)優(yōu)化主要是物理方法的優(yōu)化相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    抖音關(guān)鍵詞排名查詢(xún)接口(抖音關(guān)鍵詞搜索綜合排名)

    如何查看別人淘寶店鋪銷(xiāo)量(淘寶大數(shù)據(jù)查詢(xún)平臺(tái))

    美的家裝飾公司地址(美的家裝飾公司地址查詢(xún))

    設(shè)計(jì)包裝圖案多少錢(qián)(設(shè)計(jì)包裝圖案多少錢(qián)一套)

    杭州秋濤北路攝影器材