一次針對批量查詢處理的優化

2021-09-22 13:36:41 字數 947 閱讀 1293

客戶呼叫批量查詢介面對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自帶...