最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中驗證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的操作方法

 更新時間:2024年12月05日 11:34:18   作者:Ch.yang  
這篇文章主要介紹了Java中驗證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的操作方法,本文使用 Spock(可集成Spring Boot項目) 編寫測試用例,基于 Groovy (JVM語言),感興趣的朋友跟隨小編一起看看吧

前言

  • 本文使用 Spock(可集成Spring Boot項目) 編寫測試用例,基于 Groovy (JVM語言)
  • 用例的目標為 Mybatis 的查詢api
  • 用例數(shù)據(jù)量10W 行
  • 用例倉庫地址

1. 配置用例堆內(nèi)存大小

-Xmx100m,配置堆內(nèi)存大小,讓溢出情況更快出現(xiàn)

2. 單次全量查造成 GC overhead limit exceeded

“GC overhead limit exceeded”是Java虛擬機(JVM)在運行時拋出的一個錯誤消息,它指示JVM花費了太多時間進行垃圾回收(GC),但回收的堆內(nèi)存卻很少
以下用例的意思是,期待拋出異常,并打印異常信息。

3. 分片查詢減輕GC壓力

使用 Guava 的工具分片查詢同一批數(shù)據(jù),異常消失。

4. Spock 語法積累

4.1 測試用例的鉤子函數(shù)

  • Spock 相關的鉤子函數(shù)造數(shù)
  • setup 方法——用例執(zhí)行前調(diào)用cleanup 方法——用例執(zhí)行后調(diào)用
@SpringBootTest(classes = KetchupApplication.class)
class GcSpec extends Specification {
    @Resource
    FileOutputRecordMapper mapper
	/**
     * 十萬條數(shù)據(jù)庫查詢
     */
    Long startId = 1;
    Long endId = 100000;	
    /**
     * 生成十萬條數(shù)據(jù),測試用例執(zhí)行完后刪除
     */
    def setup() {
        def allIds = (startId..endId).toList()
        Lists.partition(allIds, 1000).forEach { subIds ->
            def sub = subIds.collect(it -> createPO(it))
            mapper.batchInsertWithId(sub);
        }
    }
    def cleanup() {
        mapper.deleteByIdRang(startId, endId)
    }
}

4.2 given when then expect 的用法

以下是已知的三種用例寫法

    def "分片查詢" () {
    	given:
        when:
        then:
    }
    def "分片查詢" () {
        when:
        then:
    }
    def "分片查詢" () {
    	given:
        expect:
    }

5. Groovy 語法積累

5.1 Rang 數(shù)據(jù)結構 rang 聲明

def rang = (startId .. endId)

普通的 list 聲明 ()

def list = [1,2,3]

rang 轉 list

// 生成一個list,內(nèi)部的元素是從1 到 100000的數(shù)值類型
def allIds = (1 .. 100000).toList()

5.2 List.collect

// 以下的 collect 寫法比Java簡潔很多
def sub = subIds.collect(it -> createPO(it))
// 等價于 Java 的寫法
List<FileOutputRecordPO> poList = subIds.stream().map(it -> createPO(it)).collect(Collectors.toList())

6. Guava 工具類積累

Lists.partition(allIds, 1000).forEach...

本文的集合分片工具來自:

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>30.1-jre</version>
        </dependency>

后記

大數(shù)據(jù)量的查詢時,避免用一個大List<>裝大量數(shù)據(jù),必要時將數(shù)據(jù)分片,減輕GC壓力。
大數(shù)據(jù)的不同任務,盡量串行化執(zhí)行,避免出現(xiàn)GC毛刺。

到此這篇關于Java中驗證 Mybatis 數(shù)據(jù)分片可以減輕GC壓力的文章就介紹到這了,更多相關 Mybatis 數(shù)據(jù)分片減輕GC壓力內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Boot中Elasticsearch的連接配置原理與使用詳解

    Spring Boot中Elasticsearch的連接配置原理與使用詳解

    在Spring Boot中,我們可以通過Elasticsearch實現(xiàn)對數(shù)據(jù)的搜索和分析,本文將介紹Spring Boot中Elasticsearch的連接配置、原理和使用方法,感興趣的可以了解一下
    2023-09-09
  • mybatis的Configuration詳解

    mybatis的Configuration詳解

    這篇文章主要介紹了mybatis的Configuration詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • SpringBoot2 整合Nacos組件及環(huán)境搭建和入門案例解析

    SpringBoot2 整合Nacos組件及環(huán)境搭建和入門案例解析

    這篇文章主要介紹了SpringBoot2 整合Nacos組件,環(huán)境搭建和入門案例詳解,在整合springboot2時注意版本 0.2.x.RELEASE 對應的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 對應的是 Spring Boot 1.x 版本,具體內(nèi)容詳情跟隨小編一起看看吧
    2022-03-03
  • Hadoop源碼分析五hdfs架構原理剖析

    Hadoop源碼分析五hdfs架構原理剖析

    本篇是Hadoop源碼分析系列文章第五篇,主要介紹Hadoop的hdfs架構原理剖析,后續(xù)本系列文章會持續(xù)更新,有需要的朋友可以借鑒參考下
    2021-09-09
  • Java中輸出字符的ASCII值實例

    Java中輸出字符的ASCII值實例

    這篇文章主要介紹了Java中輸出字符的ASCII值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • JavaFX中處理Spring的異常的方法

    JavaFX中處理Spring的異常的方法

    JavaFX運行在JavaFX應用線程(JavaFX Application Thread)上,而Spring通常運行在獨立的線程中,本文給大家介紹JavaFX中處理Spring的異常的方法,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Java響應式編程之handle用法解析

    Java響應式編程之handle用法解析

    這篇文章主要介紹了Java響應式編程之handle用法解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Spring如何避免被JVM 垃圾回收

    詳解Spring如何避免被JVM 垃圾回收

    如果Spring 被回收掉,Spring管理的bean全部會被回收,那我們的Java應用不就被一鍋端了嗎?所以本文小編將和大家一起聊聊Spring如何避免被JVM垃圾回收,需要的朋友可以參考下
    2023-11-11
  • Spring MVC @RequestParam注解使用場景分析

    Spring MVC @RequestParam注解使用場景分析

    @RequestParam是Spring MVC中用于綁定HTTP查詢參數(shù)和表單數(shù)據(jù)的注解,支持類型轉換、默認值及可選參數(shù),適用于簡單數(shù)據(jù)場景,本文給大家介紹Spring MVC @RequestParam注解使用場景分析,感興趣的朋友一起看看吧
    2025-07-07
  • Sleuth+logback 設置traceid 及自定義信息方式

    Sleuth+logback 設置traceid 及自定義信息方式

    這篇文章主要介紹了Sleuth+logback 設置traceid 及自定義信息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

张北县| 新密市| 黑龙江省| 大庆市| 黑河市| 金山区| 桃园县| 麻栗坡县| 周至县| 安乡县| 昆明市| 平阳县| 西安市| 乐东| 茶陵县| 贵定县| 波密县| 新巴尔虎右旗| 甘孜| 乌鲁木齐县| 平邑县| 印江| 凤冈县| 长乐市| 进贤县| 巩义市| 句容市| 土默特右旗| 桐庐县| 丰镇市| 东海县| 东乌| 兰州市| 浠水县| 和顺县| 柯坪县| 大理市| 海安县| 资兴市| 平泉县| 南华县|