1. 程式人生 > >關於Solr索引效能優化

關於Solr索引效能優化

如何能在有限的伺服器資源上較好的使用Solr服務,效能調優是必不可少的。鑑於個人經驗,給出幾條可調優方法:
1. 配置SolrConfig中的Directory, 不當的Directory會消耗大量的記憶體或IO資源,當索引規模變大時也很容易導致記憶體溢位,或索引維護的Map Failed現象!如何選擇合適的Directory可參看《Lucene in Action》(第二版) Section2.10 中文字P52;
2. 配置Schema中的欄位的 omitNorm= true, Norm中儲存了大量的欄位資訊用於評分排序. 如果不是很必要的話可把omitNorm設定為true能夠減少磁碟和記憶體的使用並加快索引速度,同時只用來索引而不需要顯示的欄位也可設定indexed=”true” stored=”false”, 具體Norm的作用可參見《Lucene in Action》(第二版) Section2.53 中文字P47;
3. 調整SolrConfig中的合併因子mergeFactor和記憶體觸發機制setRAMBBufferSizeMB。mergeFactor越小,索引合併越頻繁,索引段越少,同時,setRAMBBufferSizeMB越小,Writer更新的越頻繁,索引段越多;《Lucene in Action》(第二版) Section11
4. 在索引階段,不進行索引優化能夠接受的話,就不進行索引優化optimize(),很耗時的一件事!但是在查詢階段,優化往往能夠大幅度提高查詢效率,因而如果可以,考慮週期性optimize()或optimize(maxNumSegments);《Lucene in Action》(第二版) Section11

注意:1. 在優化過程中,索引檔案很容易佔用超過自身文字大小10倍的硬碟空間,因而一定要考慮伺服器的資源限制問題!《Lucene in Action》(第二版) Section11 中文字P355
2.欄位中必留的三個: uniqueKey:id ,version, text

當然更多的效能調優方案要參考《Lucene in Action》(第二版) Section11 中文字P335, 文中給出很多細節的調優方案,例如如果財力支援的話請購買固態硬碟,哈哈。
推薦大家學Lucene還是去閱讀Lucene in action, 看8月份manning出版社要出solr in action了,值得一讀
優化任務任重而道遠…

相關推薦

關於Solr索引效能優化

如何能在有限的伺服器資源上較好的使用Solr服務,效能調優是必不可少的。鑑於個人經驗,給出幾條可調優方法: 1. 配置SolrConfig中的Directory, 不當的Directory會消耗大量的記憶體或IO資源,當索引規模變大時也很容易導致記憶體溢位,或索引維護的M

elasticsearch-索引效能優化技巧

段和合並編輯 段合併的計算量龐大, 而且還要吃掉大量磁碟 I/O。合併在後臺定期操作,因為他們可能要很長時間才能完成,尤其是比較大的段。這個通常來說都沒問題,因為大規模段合併的概率是很小的。 不過有時候合併會拖累寫入速率。如果這個真的發生了,Elasticsearch 會自動限制索引請求到單

Sql Sever效能優化之指定索引

背景:生產環境SQL語句查詢過慢(資料總量在350萬左右),日誌中心一直報警 解決過程:分析無果後,求助於公司的DBA,DBA分析後建議在語句中指定索引 解決:在SQL語句中指定索引,效果相當明顯,親測有效 優化前SQL: SELECT ROW_NUMBER() OVER ( ORDER BY

MySQL(三) —— MySQL效能優化索引優化

MySQL索引優化 如何選擇合適的列建立索引? 在where從句、group by 從句、order by 從句、on 從句中出現的列 索引欄位越小越好 離散度大的列放在聯合索引的前面 如何判斷列的離散度? 去重查詢看列的唯一值,唯一值越多則離散度越大。 mysql&

【MySQL資料庫】效能優化索引優化(一)

一、Mysql效能優化之影響效能的因素 1.商業需求的影響 不合理的需求造成的資源投入產出,這裡就用一個看上去很簡單的功能分析。需求:一個論壇帖子的總量統計,附加要求:實時更新。從功能上看來是非常容易實現的,執行一條select count(*)from表名就可以得到結果,但是如果我們採

mysql效能優化之建立高效能索引

索引對效能的優化十分重要,是對查詢優化最有效的手段。 一、索引的型別 索引是在儲存引擎層而不是服務層實現的。不同儲存引擎的索引工作方式不一樣。 1、B-Tree索引 它使用的是B-Tree資料結構來儲存資料。b-tree索引能夠加快訪問資料的速度,因為儲存引擎不在需要進行全表掃描

mysql_建立索引的優缺點&效能優化

建立索引的優缺點: 為什麼要建立索引呢?         這是因為,建立索引可以大大提高系統的效能。          第

Mysql 索引 與 多表查詢效能優化

最近做專案需要用到Luence Whoosh,要定時從資料庫中索引出資料來供檢索,但是在索引中設計多表查詢,速度較慢,因為強迫症,想要做效能優化,因此把Mysql的核心又翻出來研究一遍。 關於MySQL索引的好處,如果正確合理設計並且使用索引的MySQL是一輛蘭博基尼的話,那麼

前端效能優化方案索引

1 請求和響應 快取控制 請求頭裡,可以傳送 If-Modified-Since 以及 If-None-Match 等資訊,來詢問服務端請求內容是否有更新,如果沒有更新,可返回304,告訴瀏覽器使用快取,避免重新下載資源。Pragma 和 Cache-Contr

oracle 效能優化操作七:索引提高資料分佈不均勻時查詢效率

索引的選擇性低,但資料的分佈差異很大時,仍然可以利用索引提高效率。 A、資料分佈不均勻的特殊情況下,選擇性不高的索引也要建立。 表ServiceInfo中資料量很大,假設有一百萬行,其中有一個欄位DisposalCourseFlag,取範圍為列舉:[0,1,2,3,4,5,6

SQL Server 查詢效能優化——建立索引原則(一)

 索引是什麼?索引是提高查詢效能的一個重要工具,索引就是把查詢語句所需要的少量資料新增到索引分頁中,這樣訪問資料時只要訪問少數索引的分頁就可以。但是索引對於提高查詢效能也不是萬能的,也不是建立越多的索引就越好。索引建少了,用WHERE子句找資料效率低,不利於查詢資料。索引建多

MySQL(三) —— MySQL效能優化索引優化

MySQL索引優化   如何檢視mysql資料庫的引擎 一般情況下,mysql會預設提供多種儲存引擎,你可以通過下面的檢視: 看mysql支援哪些儲存引擎: mysql> show engines; mysql> show engines; +--

MySQL索引使用方法和效能優化

關於MySQL索引的好處,如果正確合理設計並且使用索引的MySQL是一輛蘭博基尼的話,那麼沒有設計和使用索引的MySQL就是一個人力三輪車。對於沒有索引的表,單表查詢可能幾十萬資料就是瓶頸,而通常大型網站單日就可能會產生幾十萬甚至幾百萬的資料,沒有索引查詢會變的非常緩慢。還是

資料庫查詢效能優化之利器—索引

一.索引的概念   廣義的索引是指:將具有檢索意義的事項按照一定方式排列,以方便進行檢索。資料庫中的索引是指:將資料庫表中的一列或者多列按照一定的方式進行組織以方便對資料庫表中的內容進行查詢。   字典是廣義的索引最好的例子,比如我們在字典中查詢"陳"字,有兩種查詢方

效能優化:監控索引的使用情況

黃瑋(Fuyuncat),資深 Oracle DBA,從事 Oracle 資料庫管理、維護與開發工作十餘年,有豐富的大型資料庫設計、開發與維護方面的經驗,部落格www.HelloDBA.com, 編輯手記:索引的合理使用能夠提高SQL的執行效率,但索引並不是萬能的,也不是所有的索引都會被Oracl

資料庫效能優化一:SQL索引一步到位

SQL索引在資料庫優化中佔有一個非常大的比例, 一個好的索引的設計,可以讓你的效率提高几十甚至幾百倍,在這裡將帶你一步步揭開他的神祕面紗。   1.1 什麼是索引?   SQL索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系統的效能,加快資

用Kotlin擼一個自定義字母索引控制元件,效能優化

之前App使用Kotlin重構之後,最大的感觸就是kotlin簡潔的語法以及擴充套件函式等特性極大的提升了我們編寫程式碼的速度。 如果說Java是K、T開頭的普通火車的話,那Kotlin就是D、G開頭的動車高鐵了! 嗯,相信我,去用一用吧,絕對很爽。 好了,開

百萬級資料庫效能優化(一)——建立索引

對查詢進行優化,要儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 為了能夠使用索引,我們應該避免使用以下查詢方式: 2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表

mysql資料庫效能優化(包括SQL,表結構,索引,快取)

很多人都將 資料庫設計正規化 作為資料庫表結構設計“聖經”,認為只要按照這個正規化需求設計,就能讓設計出來的表結構足夠優化,既能保證效能優異同時還能滿足擴充套件性要求。殊不知,在N年前被奉為“聖經”的資料庫設計3正規化早就已經不完全適用了。這裡我整理了一些比較常見的資料庫表結構設計方面的優化技巧,希望對大家

sybase 中delete 效能優化,新增索引

aa表和bak_temp_aa表中都有VERIFICATION_ID 這個列,要刪除aa表中在bak_temp_aa表中不存在的列 常規的刪除法: delete aa where VERIFICATION_ID not in (select VERI