摘要:原文鏈接查詢?nèi)罩痉治銎魇且粋€桌面應(yīng)用,用于幫助了解企業(yè)版服務(wù)器查詢?nèi)罩疚募O旅媸窃诎惭b查詢?nèi)罩痉治銎鳌.?dāng)被禁用時,此值顯示設(shè)置項查詢被執(zhí)行前的平均等待時間。設(shè)置項代表這個請求的數(shù)據(jù)有百分之多少是從緩存中讀取的。
原文鏈接: https://medium.com/neo4j/meet...
查詢?nèi)罩痉治銎魇且粋€Neo4j桌面應(yīng)用,用于幫助了解Neo4j企業(yè)版服務(wù)器查詢?nèi)罩疚募?br>
當(dāng)Neo4j突然變慢、或者查詢效率過低、再或者查詢負載過高時,這時最好的辦法就是查看查詢?nèi)罩尽6樵內(nèi)罩就ㄟ^neo4j.conf文件配置的。
dbms.logs.query.enabled=true # If the execution of query takes more time than this threshold, # the query is logged. If set to zero then all queries dbms.logs.query.threshold=100ms dbms.logs.query.parameter_logging_enabled=true dbms.logs.query.time_logging_enabled=true dbms.logs.query.allocation_logging_enabled=true dbms.logs.query.page_logging_enabled=true dbms.track_query_cpu_time=true dbms.track_query_allocation=true
一般情況下,設(shè)置一個閾值,當(dāng)請求超過這個時間(示例是100ms,或者設(shè)置為0,代表所有請求)時,就會被記錄下來。這也意味著,查詢?nèi)罩局杏涗浀恼埱蟛⒉皇欠?wù)器上的所有查詢。但是這個工具仍然可以為你提供一個快速定位可能造成查詢瓶頸的方向。
在后續(xù)的文章中我將會做詳細的介紹。
當(dāng)在開發(fā)項目時,最好要經(jīng)常在開發(fā)服務(wù)器和測試服務(wù)器上分別去分析你的查詢?nèi)罩荆员惆l(fā)現(xiàn)問題。
工欲善其事必先利其器。接下來,先看一下如何安裝查詢?nèi)罩痉治銎鳌?br>下面是在Neo4j Desktop 1.1.10+安裝查詢?nèi)罩痉治銎鳌?br>
打開“Graph Aplications"側(cè)邊欄,把URL (https://neo.jfrog.io/neo/api/...到"Insert Graph Application"輸入框中,按下”Install“按鈕。
選擇一個工程,點擊應(yīng)用列表中的"+ Add Application"。
在這里增加“Query Log Analyzer”到你的工程中。
下面我來重點解釋一下查詢?nèi)罩痉治銎鳌?/p> 查詢?nèi)罩痉治銎?/b>
查詢?nèi)罩痉治銎餍枰粋€query.log文件。你將文件上傳到工具中,然后它就開始分析。分析文件完成后,將顯示下信息:
在上面的示例中的日志文件中,有17341行數(shù)據(jù)(一行一請求),有249個查詢被發(fā)現(xiàn)。這些查詢會顯示在“Query Analysis"標(biāo)簽頁中,你可以看到每個查詢的統(tǒng)計數(shù)據(jù)。
在Query Analysis標(biāo)簽頁中,不同的查詢是按 查詢次數(shù)*平均時間 降序排列的。這樣的排序可以將最耗時的查詢排在最前面。
在Query Analysis標(biāo)簽頁中,有以下字段和功能:
The Query(在AvgTime?—?Avg Mem值的下面)
這是實際的查詢語句
Query Count
日志文件中查詢的次數(shù),對于這個查詢,還有下面一些功能可以使用:
Filter
在Query Log標(biāo)簽內(nèi)中,只顯示這個查詢的查詢紀錄。
Highlight
在Query Log標(biāo)簽內(nèi)中,高亮顯示這個查詢。當(dāng)要看同時發(fā)到服務(wù)器的查詢時,會更便于查看。
Timline
實驗性的!在Query Timeline標(biāo)簽中今次顯示查詢
Avg Time, Min Tim, Max Time
這里的時間是查詢執(zhí)行的累積時間(查詢+執(zhí)行計劃+等待)。
Avg CPU
實際請求執(zhí)行所占CPU時間。當(dāng)詳細時間日志被禁用時,這里顯示0.
設(shè)置項:
dbms.logs.query.time_logging_enabled=true dbms.track_query_cpu_time=true
Max Planning
這是執(zhí)行計劃階段所花費的最大時間,當(dāng)鼠標(biāo)懸停在該值上時,將會顯示最小時間和平均時間。一般一個查詢第一次被觸發(fā)時,查詢生成執(zhí)行計劃,然后這個執(zhí)行計劃被放到查詢緩存中,當(dāng)查詢再次被執(zhí)行時,生成執(zhí)行計劃的時間幾乎為0。當(dāng)執(zhí)行計劃被從緩存中移除時,下一個請求才會再次編譯成執(zhí)行計劃。當(dāng)Time logging被禁用時,此值顯示0.設(shè)置項:
dbms.logs.query.time_logging_enabled=true
Avg Waiting
查詢被執(zhí)行前的平均等待時間。這個等待可能是由于數(shù)據(jù)庫負載過重造成,也可能是由于數(shù)據(jù)庫鎖造成的。當(dāng)Time logging被禁用時,此值顯示為0。設(shè)置項:
dbms.logs.query.time_logging_enabled=true
Cache Hits %
代表這個請求的數(shù)據(jù)有百分之多少是從緩存中讀取的。100%意味著所有數(shù)據(jù)都是從緩存中讀取的。設(shè)置項:
dbms.logs.query.page_logging_enabled=true
Avg Mem
代表這個請求分配了多少內(nèi)存。注意,這是一個累積值,表明了查詢的內(nèi)存占用情況。設(shè)置項:
dbms.logs.query.allocation_logging_enabled=true dbms.track_query_allocation=true
Protocol + Clients
在請求的上下文中你可以看到所使用的協(xié)議。其值有:
bolt
一個blot客戶端連到數(shù)據(jù)庫。
http
http客戶端使用Neo4j的rest接口。(Neo4j老版本使用)
embedded
來自數(shù)據(jù)庫內(nèi)部的調(diào)用,像存儲過程或函數(shù)。
此外,還有一個客戶端列表顯示,它列出了當(dāng)前有多少個不同IP向Neo4j服務(wù)器發(fā)出請求。注意,blot驅(qū)動是使用連接池連接數(shù)據(jù)庫的,所以,你能看到1個IP會有多個客戶端。
查詢?nèi)罩?/b>Query Log標(biāo)簽頁,使用查詢?nèi)罩拘凶鳛榱藰?biāo)頭。更多的信息則需要拖動水平滾動條才能看到。在第一個Query Analysis標(biāo)簽頁里選擇一個查詢點擊“Highlight",再點擊Filter時,就會跳到這個頁面,且只顯示你選中的請求日志記錄。這時,你可以拷貝這個標(biāo)簽頁中的請求和參數(shù)去分析一個請求。
Query Timeline是一個實驗性的功能,它繪制出了每時間段(默認5分鐘)查詢總量和每秒種平均查詢次數(shù)。它是基于日志文件中記錄的時間,而不是查詢開始時間。通過這張圖,可以快速的了解到服務(wù)器是什么什么時候請求最多。
查詢?nèi)罩痉治銎鞯脑创a在github的 kvegter/query-analyzer-app(https://github.com/kvegter/query-analyzer-app) 上,可以在那里閱讀文檔和報bug.
如果你有任何關(guān)于查詢性能的問題,可以前往Neo4j Users Slack或Neo4j Community上#help-cypher頻道咨詢。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17930.html
摘要:默認采用實現(xiàn)可定制,如自定義實現(xiàn)的索引,但默認新建的索引只支持精確匹配,模糊查詢的話需要以全文索引,控制后臺的分詞行為。本文以常用的分詞器為例,介紹如何在中對字段新建全文索引實現(xiàn)模糊查詢。 數(shù)據(jù)庫檢索效率時,一般首要優(yōu)化途徑是從索引入手,然后根據(jù)需求再考慮更復(fù)雜的負載均衡、讀寫分離和分布式水平/垂直分庫/表等手段;索引通過信息冗余來提高檢索效率,其以空間換時間并會降低數(shù)據(jù)寫入的效率,因...
閱讀 1634·2023-04-26 02:11
閱讀 2978·2023-04-25 16:18
閱讀 3710·2021-09-06 15:00
閱讀 2630·2019-08-30 15:55
閱讀 1934·2019-08-30 13:20
閱讀 2051·2019-08-26 18:36
閱讀 3121·2019-08-26 11:40
閱讀 2537·2019-08-26 10:11