" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis游標Cursor在Oracle數(shù)據(jù)庫上的測試方式

 更新時間:2024年01月27日 09:41:17   作者:isea533  
這篇文章主要介紹了MyBatis游標Cursor在Oracle數(shù)據(jù)庫上的測試方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

測試數(shù)據(jù)的列更多,內容更多,和 MyBatis游標Cursor的正確用法和百萬數(shù)據(jù)傳輸?shù)膬却鏈y試 不同,占用內存沒有可比性。

1.1. 不配置內容,查詢全部,99萬數(shù)據(jù)

內存緩慢增長,12分鐘都沒有查詢完。

1.2. 初始2G內存,最大4G內存,fetchSize=10000

當不設置fetchSize時,Oracle默認10,內存增長和1一樣緩慢,查看源碼發(fā)現(xiàn)Oracle默認為10:

為了更快的測試出結果,這里設置10000。

  • 查詢過程耗時:54764ms
  • GC:20次
  • 占用內存:1582MB

2.1. Cursor查詢,一條一條處理

默認的fetchSize=10,內容沒有持續(xù)增加,但是執(zhí)行時間仍然很長。

5分鐘沒有完成,直接終止運行。

2.2 Cursor查詢,fetchSize=10000

  • 查詢過程耗時:49340ms
  • GC:36次
  • 占用內存:164MB

2.3 Cursor查詢,fetchSize=1000,內存限制20MB

  • 查詢過程耗時:124113ms
  • GC:4563次
  • GC耗時:73337ms
  • 占用內存:19MB
  • 一半的時間在GC,吞吐量只有41%。

2.4 Cursor查詢,fetchSize=100,內存限制20MB

  • 查詢過程耗時:390714ms
  • GC:4631次
  • GC耗時:95130ms
  • 占用內存:18MB
  • GC耗時很長,吞吐量只有76%。

7分鐘才執(zhí)行完,

2.5 Cursor查詢,fetchSize=10000,內存限制50MB

  • 查詢過程耗時:42044ms
  • GC:158次
  • GC耗時:173ms
  • 占用內存:42MB

總結

除了上面的列出的幾種情況下,還試過多種不同的配置,耗時沒有比2.5更好。

除了MySQL中需要通過fetchSize = Integer.MIN_VALUE作為標記開啟流式傳輸外,其他數(shù)據(jù)庫都是正常的用法,通過控制 fetchSize 大小來減少內存占用和數(shù)據(jù)庫交互次數(shù)。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論