.net雙拼做公司網(wǎng)站臨沂做網(wǎng)站建設(shè)公司
本文字?jǐn)?shù):2631;估計(jì)閱讀時(shí)間:7?分鐘
作者:Bucky Schwarz
本文在公眾號(hào)【ClickHouseInc】首發(fā)
我們最近發(fā)布了 Query Insights 的初步實(shí)現(xiàn),為 ClickHouse Cloud 用戶提供了一種便捷的方法來查看和解釋查詢?nèi)罩?。該功能?duì)所有 ClickHouse Cloud 用戶開放,本篇文章將討論其功能和構(gòu)建過程。
為什么要構(gòu)建查詢?nèi)罩?UI?
ClickHouse 實(shí)例中的 system.query_log 表包含大量有價(jià)值的數(shù)據(jù),可以幫助用戶了解:
-
查詢性能和異常;
-
錯(cuò)誤及其相關(guān)信息(異常代碼、消息、設(shè)置、配置文件事件等);
以及
-
時(shí)間序列查詢指標(biāo)(讀取/寫入吞吐量、數(shù)據(jù)量和延遲的變化)。
然而,收集這些信息也帶來了挑戰(zhàn)——system.query_log 目前包含超過 70 個(gè)字段(完整列表請(qǐng)見此處:https://clickhouse.com/docs/en/operations/system-tables/query_log),并且每個(gè)查詢會(huì)生成兩個(gè)或更多記錄。因此,解釋查詢?nèi)罩緮?shù)據(jù)可能會(huì)很困難,特別是對(duì)于不太熟悉 ClickHouse 的用戶來說。
為了說明這一點(diǎn),讓我們來看一下在 CLI 中執(zhí)行簡(jiǎn)單的?select * from system.query_log?的輸出:
ClickHouse Cloud 中的 SQL 控制臺(tái)在這方面有所改進(jìn)(至少在視覺效果上),但如果您不清楚具體要查找的信息,使用體驗(yàn)仍然不是很直觀:
增加一些復(fù)雜性,每個(gè) ClickHouse Cloud 服務(wù)至少包含兩個(gè)副本,每個(gè)副本都有自己的查詢?nèi)罩景姹?#xff0c;這意味著簡(jiǎn)單地運(yùn)行?select * from system.query_log?只會(huì)返回當(dāng)前副本的結(jié)果。因此,每當(dāng) ClickHouse Cloud 用戶(或任何運(yùn)行多副本部署的 ClickHouse 用戶)想要檢查查詢?nèi)罩緯r(shí),都需要使用?clusterAllReplicas()?函數(shù),這對(duì)于經(jīng)驗(yàn)較少的用戶來說同樣不直觀。這引出了我們第一個(gè)(也是最明顯的)查詢?nèi)罩?UI 的頂級(jí)目標(biāo):
-
目標(biāo) #1?— 使查詢?nèi)罩緮?shù)據(jù)更易于解釋和訪問
如前所述,查詢?nèi)罩臼遣樵儍?yōu)化、調(diào)試和監(jiān)控整個(gè)集群健康狀況和性能的關(guān)鍵信息來源。除了提高查詢?nèi)罩緮?shù)據(jù)的可訪問性之外,考慮到查詢?nèi)罩镜挠猛竞褪褂脮r(shí)機(jī),我們還確定了這個(gè)新功能的其他頂級(jí)目標(biāo):
-
目標(biāo) #2?— 暴露重要的頂級(jí)查詢指標(biāo)
-
目標(biāo) #3?— 簡(jiǎn)化利用查詢?nèi)罩镜牟樵冋{(diào)試和優(yōu)化工作流
-
目標(biāo) #4?— 提供基于上下文的“智能”建議和洞察,進(jìn)一步簡(jiǎn)化查詢調(diào)試和優(yōu)化
采用迭代方法
當(dāng)我們開始規(guī)劃這個(gè)功能時(shí),我們確定前兩個(gè)目標(biāo)可以相對(duì)快速地實(shí)現(xiàn),并能夠解決用戶的主要痛點(diǎn)。另一方面,后兩個(gè)目標(biāo)仍然比較模糊,需要進(jìn)一步研究和深入理解不同的查詢?nèi)罩局笜?biāo)在何時(shí)和如何重要。因此,我們決定盡快發(fā)布一個(gè)初始版本,以實(shí)現(xiàn)目標(biāo) #1 和 #2,并為逐步改進(jìn)目標(biāo) #3 和 #4 奠定基礎(chǔ)。重要的是,未來的迭代工作將基于用戶反饋。如果您正在閱讀這篇文章,請(qǐng)嘗試我們的新查詢洞察 UI 并給我們反饋!
查詢洞察 V1
選擇服務(wù)后,左側(cè)邊欄的監(jiān)控導(dǎo)航項(xiàng)會(huì)展開,顯示一個(gè)新的“查詢洞察”子項(xiàng)。點(diǎn)擊此選項(xiàng)將打開新的查詢洞察頁面:
頂級(jí)指標(biāo)
頁面頂部的統(tǒng)計(jì)框顯示了所選時(shí)間段內(nèi)的一些基本查詢指標(biāo)。下面展示了三個(gè)時(shí)間序列圖,分別代表查詢量、延遲和錯(cuò)誤率,這些圖按查詢類型(選擇、插入、其他)在所選時(shí)間窗口內(nèi)分解顯示。延遲圖可以進(jìn)一步調(diào)整,以顯示 p50、p90 和 p99 延遲:
最近的查詢
在頂級(jí)指標(biāo)下方,有一個(gè)表格顯示了所選時(shí)間窗口內(nèi)按標(biāo)準(zhǔn)化查詢哈希和用戶分組的查詢?nèi)罩緱l目:
最近的查詢可以按任何可用字段進(jìn)行過濾和排序,表格也可以配置以顯示或隱藏附加字段(如表格、p90 和 p99 延遲)。
查詢?cè)斍?/h3>
在最近的查詢表格中選擇一個(gè)查詢,會(huì)打開一個(gè)包含該查詢特定指標(biāo)和信息的側(cè)邊欄:
從側(cè)邊欄可以看到,這個(gè)特定查詢?cè)谶^去 24 小時(shí)內(nèi)已運(yùn)行超過 3000 次?!安樵冃畔ⅰ边x項(xiàng)卡顯示的是匯總指標(biāo),但我們也可以通過選擇“查詢歷史”選項(xiàng)卡查看單次運(yùn)行的指標(biāo):
幕后揭秘
查詢洞察是我在二月底加入 ClickHouse 后參與的第一個(gè)重要項(xiàng)目。在開始這個(gè)功能開發(fā)之前,我花了幾周時(shí)間做一些小任務(wù)和修復(fù)錯(cuò)誤,以熟悉代碼庫(kù)和工作流程。這反映了團(tuán)隊(duì)對(duì)我的信任和信心,以及我們招聘流程的高標(biāo)準(zhǔn)——高標(biāo)準(zhǔn)的招聘讓我們確信被錄用的人有能力完成工作,并能迅速上手。
這個(gè)功能的目標(biāo)和設(shè)計(jì)已經(jīng)相當(dāng)明確,但細(xì)節(jié)和實(shí)施由我負(fù)責(zé)。我從一個(gè) Figma 設(shè)計(jì)開始,該設(shè)計(jì)展示了一個(gè)通用的圖表和顯示不同類型數(shù)據(jù)(如所有查詢、錯(cuò)誤和慢查詢)的功能。實(shí)現(xiàn)過程中,主要是將查詢邏輯與可視化代碼分離,并定義了清晰的接口。這些接口允許我們?cè)诓挥绊憟D表渲染代碼的情況下,更改傳遞給查詢的數(shù)據(jù)(例如時(shí)間范圍以及查詢的是延遲還是錯(cuò)誤)。
在我的職業(yè)生涯中,我已經(jīng)學(xué)到,功能的草擬與實(shí)際運(yùn)行是兩回事,并且我們對(duì)軟件需求的理解會(huì)隨著時(shí)間而變化。因此,我在接手這個(gè)項(xiàng)目時(shí),嘗試讓初始版本范圍盡可能狹窄(但仍可用),然后將功能展示給各種內(nèi)部和外部用戶——這是開發(fā) Web 應(yīng)用程序的標(biāo)準(zhǔn)方法。這樣,任何未來的更改都可以相對(duì)容易地實(shí)施。我前面提到的慢查詢,經(jīng)過早期用戶使用后,我們認(rèn)為其概念不太合理,于是取消了它,并用 p99、p90 和 p50 延遲替代。我們還意識(shí)到,點(diǎn)擊表格時(shí)顯示的側(cè)邊欄效果不好,因此幾乎完全重新設(shè)計(jì)了它。這些都不是大問題,因?yàn)槲覀冊(cè)陂_發(fā)時(shí)預(yù)見到了可能的更改,并設(shè)置了相應(yīng)的抽象和接口,以便輕松實(shí)現(xiàn)這些更改。
征稿啟示
面向社區(qū)長(zhǎng)期正文,文章內(nèi)容包括但不限于關(guān)于 ClickHouse 的技術(shù)研究、項(xiàng)目實(shí)踐和創(chuàng)新做法等。建議行文風(fēng)格干貨輸出&圖文并茂。質(zhì)量合格的文章將會(huì)發(fā)布在本公眾號(hào),優(yōu)秀者也有機(jī)會(huì)推薦到 ClickHouse 官網(wǎng)。請(qǐng)將文章稿件的 WORD 版本發(fā)郵件至:Tracy.Wang@clickhouse.com
??聯(lián)系我們
手機(jī)號(hào):13910395701
郵箱:Tracy.Wang@clickhouse.com
滿足您所有的在線分析列式數(shù)據(jù)庫(kù)管理需求