記錄HikariCP連線池的乙個bug

2022-03-03 02:24:12 字數 584 閱讀 2228

再用hikari連線池做乙個利用儲存過程獲取多結果集的mysql儲存過程報錯,報告某個列名字找不到,部分**截圖如下

1

//....hikari獲取connection,執行callablestatement呼叫儲存過程....

2while (cs.getmoreresults(1))

14 }

15

第乙個結果集處理都挺正常,後面的結果集處理過程中老報錯,表示某個列名沒找到

最後經過艱難的debug過程,發現hikari**的resultset物件不管獲取第幾個結果集,最後的結果集元資訊,即列名等資訊一直沒有更新,導致利用列名獲取結果的時候報錯,解決辦法是在獲取結果的時候利用列索引而不是列名,即如下所示

1

//....hikari獲取connection,執行callablestatement呼叫儲存過程....

2while (cs.getmoreresults(1))

14 }

15

第三方的外掛程式其實也是依賴底層去做的,如果對底層的實現沒有那麼全面的話,也會出現這樣那樣的問題,所以基礎知識還是挺重要的。

HikariCP 資料庫連線池常見引數

無論用什麼資料庫連線池,在配置資料庫的時候還需要配置一大堆連線池引數,在hikari的原始碼中也有很多的設定引數,那麼每乙個引數的實際意義是什麼提前學習一下很有必要。我之前都是按照網上或者是其他專案的配置檔案複製一下直接拿來用,也沒有真正思考過這些引數代表的實際意義。所以寫乙個學習筆記,如有問題請幫...

資料庫連線池Hikaricp原始碼分析

hikaricp總結 借助哪些技術使效能超越其他執行緒池的?為了效能,自定義資料結構 fastlist concurrentbag 主要就是concurrentbag使用threadlocal sharelist 等待queue 對獲取connnection做了優化。定時器相關的使用 schedul...

資料庫連線池數如何配置與HikariCP

hikaricp連線池是高效能的jdbc連線池,官網標註的三大特點 快速 簡單 可靠,效能優於其他連線池。官網詳細地說明了hikaricp所做的一些優化,總結如下 優化 和 減少 例如hikaricp的statement proxy只有100行 只有bonecp的十分之一 自定義陣列型別 fasts...