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ù)。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springmvc項目使用@Valid+BindingResult遇到的問題
這篇文章主要介紹了springmvc項目使用@Valid+BindingResult遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Spring Schedule Task動態(tài)改寫Cron配置方式
這篇文章主要介紹了Spring Schedule Task動態(tài)改寫Cron配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11java8 forEach結合Lambda表達式遍歷 List操作
這篇文章主要介紹了java8 forEach結合Lambda表達式遍歷 List操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09MyBatis typeAliases元素標簽(含注解方式)及其屬性、設置方式
這篇文章主要介紹了MyBatis typeAliases元素標簽(含注解方式)及其屬性、設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑記錄
這篇文章主要介紹了使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Java Socket一對多通信實現(xiàn)之并發(fā)處理方式
這篇文章主要介紹了Java Socket一對多通信實現(xiàn)之并發(fā)處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Java 中函數(shù) Function 的使用和定義示例小結
這篇文章主要介紹了Java 中函數(shù) Function 的使用和定義小結,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-07-07SpringBoot多模塊打包部署Docker的項目實戰(zhàn)
本文通過介紹最常見的Maven管理的Spring Boot項目多模塊打包部署Docker來介紹一下項目部署過程中操作流程和幾個需要注意的點,具有一定的參加價值,感興趣的可以了解一下2023-08-08