客戶呼叫批量查詢介面對solr核進行查詢時覺得查詢響應時間有些慢,介面的內部實現目前是順序執行每個查詢,再把結果彙總起來返回給呼叫方。因此,考慮引入執行緒池對查詢介面的內部實現進行重構優化。
先宣告乙個大小可隨之增長的執行緒池,
private executorservice executor = executors.newcachedthreadpool();//查詢請求處理執行緒池
然後是主線程方法的**:
public list> queryentitylist(string entitycode, listidlist) throws serviceexception
finalresult = new arraylist>();
list>> futurelist = new arraylist>>();
int threadnum = idlist.size();//查詢子執行緒數目
for (int i = 0; i < threadnum; i++)
for(future> future : futurelist) catch (exception e)
if (null != threadresult && threadresult.size() > 0) }
return finalresult; }
複製**
最後是具體負責處理每個查詢請求的callable
複製**
public class querycallable implements callable>
public mapcall() throws exception catch (exception e)
return entitymap; }
}複製**
通過執行緒池的使用,可以減少建立,銷毀程序所帶來的系統開銷,而且執行緒池中的工作執行緒可以重複使用,極大地利用現有系統資源,增加了系統吞吐量。
一次批量操作的優化
最近在做賬務系統的批量核銷介面的優化,該介面的功能抽象來說就是暴露給另乙個系統,每次呼叫會進行計算並更新庫里的值 感覺好普通的樣子 假設我這邊的系統是r received 對方系統是s send 那麼現在的工作流程是這樣的 1.請求分充值請求和消費請求。充值請求是商戶維度的,而消費是訂單維度的。而商...
記一次postgresql查詢優化
一 場景介紹 1 需求 根據schema 1中多表聯查結果,對相應schema 2中資料進行刪除操作。2 表結構 模式表名 表結構schema 1 table 1 id varchar 32 pk主鍵 table 2 id varchar 32 pk主鍵 table 1 id varchar 32 ...
記錄一次sql優化查詢
場景 關聯查詢,一張主表關聯4張表進行查詢。主表資料量是16萬,其中被關聯的一張表的數量是6萬。遇到頁面響應速度過慢的情況,首先考慮是否是sql查詢緩慢引起的。第一步開啟mysql的慢查詢日誌 網上教程很多,本篇文章不再贅述 第二步分析慢查詢日誌,這裡要說下分析工具。常用的有兩種,一是mysql自帶...