亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

  • 本文使用 Spock(可集成Spring Boot項(xiàng)目) 編寫(xiě)測(cè)試用例,基于 Groovy (JVM語(yǔ)言)
  • 用例的目標(biāo)為 Mybatis 的查詢api
  • 用例數(shù)據(jù)量10W 行
  • 用例倉(cāng)庫(kù)地址

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

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

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

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

3. 分片查詢減輕GC壓力

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

4. Spock 語(yǔ)法積累

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

  • Spock 相關(guān)的鉤子函數(shù)造數(shù)
  • setup 方法——用例執(zhí)行前調(diào)用cleanup 方法——用例執(zhí)行后調(diào)用
@SpringBootTest(classes = KetchupApplication.class)
class GcSpec extends Specification {
    @Resource
    FileOutputRecordMapper mapper
	/**
     * 十萬(wàn)條數(shù)據(jù)庫(kù)查詢
     */
    Long startId = 1;
    Long endId = 100000;	
    /**
     * 生成十萬(wàn)條數(shù)據(jù),測(cè)試用例執(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 的用法

以下是已知的三種用例寫(xiě)法

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

5. Groovy 語(yǔ)法積累

5.1 Rang 數(shù)據(jù)結(jié)構(gòu) rang 聲明

def rang = (startId .. endId)

普通的 list 聲明 ()

def list = [1,2,3]

rang 轉(zhuǎn) list

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

5.2 List.collect

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

6. Guava 工具類積累

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

本文的集合分片工具來(lái)自:

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

后記

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

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

相關(guān)文章

  • Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例

    Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例

    這篇文章主要為大家介紹了Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 老生常談Java中instanceof關(guān)鍵字的理解

    老生常談Java中instanceof關(guān)鍵字的理解

    java 中的instanceof 運(yùn)算符是用來(lái)在運(yùn)行時(shí)指出對(duì)象是否是特定類的一個(gè)實(shí)例。這篇文章主要介紹了老生常談Java中instanceof關(guān)鍵字的理解,需要的朋友可以參考下
    2018-10-10
  • 基于JVM 調(diào)優(yōu)的技巧總結(jié)分析

    基于JVM 調(diào)優(yōu)的技巧總結(jié)分析

    本篇文章是對(duì)JVM 調(diào)優(yōu)的技巧進(jìn)行了總結(jié)和分析。需要的朋友參考下
    2013-05-05
  • Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例

    這篇文章主要介紹了Java并發(fā)之條件阻塞Condition的應(yīng)用代碼示例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Java實(shí)現(xiàn)查找文件和替換文件內(nèi)容

    Java實(shí)現(xiàn)查找文件和替換文件內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言如何實(shí)現(xiàn)查找文件和替換文件內(nèi)容功能,文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • java Thread 多線程

    java Thread 多線程

    本篇文章小編為大家介紹,java Thread 多線程。需要的朋友參考下
    2013-04-04
  • Spring配置文件使用占位符配置方式

    Spring配置文件使用占位符配置方式

    這篇文章主要介紹了Spring配置文件使用占位符配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • AspectJ的基本用法

    AspectJ的基本用法

    本文主要介紹了AspectJ的基本用法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • SpringBoot集成Redis及SpringCache緩存管理示例詳解

    SpringBoot集成Redis及SpringCache緩存管理示例詳解

    本文介紹了如何在SpringBoot中集成Redis并使用SpringCache進(jìn)行緩存管理,詳解了Redis的配置、使用以及SpringCache的注解,還闡述了SpringCache的工作原理,包括其AOP實(shí)現(xiàn)和與各種緩存框架的集成,使得開(kāi)發(fā)者可以輕松實(shí)現(xiàn)緩存功能,以提高應(yīng)用性能
    2024-09-09
  • java使用des加密解密示例分享

    java使用des加密解密示例分享

    java使用des加密解密示例,適合java語(yǔ)言的所有平臺(tái),與.net等平臺(tái)的加密解密兼容
    2014-02-02

最新評(píng)論