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

SpringBoot連接KingbaseES數(shù)據(jù)庫(kù)連接池實(shí)戰(zhàn)指南

 更新時(shí)間:2025年08月29日 08:50:38   作者:熊文豪  
本文將結(jié)合Spring Boot的真實(shí)開(kāi)發(fā)場(chǎng)景,為大家詳細(xì)介紹四種主流方案的配置思路,適用特征與優(yōu)化要點(diǎn)一次講清,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

一、前言

在做企業(yè)級(jí)項(xiàng)目時(shí),我們常常一邊催進(jìn)度、一邊盯性能:頁(yè)面得快、接口得穩(wěn),背后最“默默無(wú)聞”卻又至關(guān)重要的那部分,往往就是數(shù)據(jù)庫(kù)連接管理。要是真到高峰期才現(xiàn)開(kāi)連接,應(yīng)用就像高鐵只剩一條候車(chē)通道 —— 堵,全線(xiàn)慢。于是,連接池這種“提前把通道鋪好、閘機(jī)開(kāi)好”的機(jī)制,就成了性能優(yōu)化的基本盤(pán)。

在國(guó)產(chǎn)數(shù)據(jù)庫(kù)里,KingbaseES這幾年在醫(yī)療,交通等對(duì)可靠性、合規(guī)性要求極高的場(chǎng)景里越用越多。很多團(tuán)隊(duì)在把原本的Oracle、PostgreSQL體系平滑遷移到KingbaseES之后,會(huì)立刻面臨一個(gè)現(xiàn)實(shí)問(wèn)題:到底選哪個(gè)連接池?DBCP老牌穩(wěn)健,C3 P0歷史悠久但偏重,Druid監(jiān)控維度豐富又接地氣,HikariCP主打“極致輕快”。本文就結(jié)合Spring Boot的真實(shí)開(kāi)發(fā)場(chǎng)景,把這四種主流方案的配置思路、適用特征與優(yōu)化要點(diǎn)一次講清,幫你少走彎路。

二、什么是數(shù)據(jù)庫(kù)連接池

簡(jiǎn)單說(shuō),數(shù)據(jù)庫(kù)連接池就是在程序真正“要水”之前,先把水桶排好、龍頭擰開(kāi),等你來(lái)接;而不是每次渴了再去打一趟井水。創(chuàng)建和關(guān)閉數(shù)據(jù)庫(kù)連接本身是昂貴的系統(tǒng)操作:握手、認(rèn)證、分配資源,步驟一個(gè)不能少。如果每個(gè)HTTP請(qǐng)求都臨時(shí)建連、用完就銷(xiāo)毀,系統(tǒng)資源就會(huì)被這些重復(fù)動(dòng)作消耗掉,吞吐量和響應(yīng)時(shí)間都會(huì)被拖慢。連接池的做法是:?jiǎn)?dòng)或空閑階段先準(zhǔn)備一批可用連接(最小池);高峰期可按規(guī)則擴(kuò)容(最大池);請(qǐng)求來(lái)時(shí)“借”一條,用完“還”回去;若有“壞桶”(失效連接),再做檢測(cè)和重建。結(jié)果是:響應(yīng)更穩(wěn)定、抖動(dòng)更小,還能通過(guò)統(tǒng)計(jì)與監(jiān)控為后續(xù)容量評(píng)估提供數(shù)據(jù)支撐。

三、SpringBoot + KingbaseES 環(huán)境準(zhǔn)備

三步心智模型:

  • 加依賴(lài)(讓項(xiàng)目知道怎么連庫(kù))
  • 填地址(告訴它去哪里、用誰(shuí)登錄)
  • 驗(yàn)連通(啟動(dòng)時(shí)或?qū)憘€(gè)最小 SQL 探活)

3.1 加依賴(lài)(pom.xml)

最少必備 = JDBC + 驅(qū)動(dòng) + 選一個(gè)連接池(別全塞上,沖突或白占空間)。

<dependencies>
    <!-- Spring JDBC 基礎(chǔ) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!-- KingbaseES 驅(qū)動(dòng)(版本鎖定,跟服務(wù)器一致) -->
    <dependency>
        <groupId>com.kingbase8</groupId>
        <artifactId>kingbase8</artifactId>
        <version>8.6.0</version>
    </dependency>

    <!-- 連接池:三選一(推薦 Hikari 或 Druid) -->
    <!-- Druid(生產(chǎn)監(jiān)控友好) -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.18</version>
    </dependency>
    <!-- 或 Apache DBCP2(老系統(tǒng)遷移) -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
    </dependency>
    <!-- 或 HikariCP(高性能 / Spring Boot 默認(rèn)) -->
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
    </dependency>
</dependencies>

提示: 如果用 Spring Boot Starter,很多情況下不必單獨(dú)引 HikariCP,它已內(nèi)嵌。

3.2 基礎(chǔ)連接信息(application.yml)

一定核對(duì)四件套:地址 / 端口 / 庫(kù)名 / 賬號(hào)密碼 + 驅(qū)動(dòng)類(lèi)名。

kingbase:
  driver-class-name: com.kingbase8.Driver
  url: jdbc:kingbase8://127.0.0.1:54321/TEST
  username: SYSTEM
  password: SYSTEM

小建議:

生產(chǎn)別寫(xiě)死密碼 → 用環(huán)境變量或外部化配置(如:ENC、K8S Secret)

若多數(shù)據(jù)源,分前綴管理,別混在 spring.datasource 根層

四、四類(lèi)主流連接池實(shí)戰(zhàn)

DBCP: 老黃牛,穩(wěn)但不花哨。

C3 P0: 功能多,參數(shù)細(xì),適合“歷史復(fù)雜場(chǎng)景”兜底。

Druid: 自帶監(jiān)控 + SQL 防火墻,運(yùn)維愛(ài)。

HikariCP: 快、輕、現(xiàn)代、高并發(fā)友好。

4.1 DBCP(遷移型 / 傳統(tǒng)項(xiàng)目友好)

看點(diǎn):initial-size / max-total / validation-query 三核心。

SpringBoot配置方式

@Configuration
public class DbcpDataSourceConfig {
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.dbcp")
    public DataSource dbcpDataSource() {
        return new BasicDataSource();
    }
}

application.yml配置

spring:
  datasource:
    dbcp:
      driver-class-name: com.kingbase8.Driver
      url: jdbc:kingbase8://127.0.0.1:54321/TEST
      username: SYSTEM
      password: MANAGER
      initial-size: 5
      max-total: 50
      min-idle: 5
      max-idle: 20
      validation-query: SELECT 'x'
      test-on-borrow: true
      test-while-idle: true
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 1800000

實(shí)際應(yīng)用示例

@Service
public class UserService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public List<User> findAllUsers() {
        return jdbcTemplate.query(
            "SELECT id, name, email FROM users",
            (rs, i) -> {
                User u = new User();
                u.setId(rs.getLong("id"));
                u.setName(rs.getString("name"));
                u.setEmail(rs.getString("email"));
                return u;
            }
        );
    }
}

4.2 C3 P0

核心參數(shù):

  • acquireIncrement:不夠時(shí)一次加多少
  • idleConnectionTestPeriod:健康巡檢周期(秒)
  • preferredTestQuery:輕量探活

SpringBoot配置方式

@Bean
public DataSource c3p0DataSource() throws PropertyVetoException {
    ComboPooledDataSource ds = new ComboPooledDataSource();
    ds.setDriverClass("com.kingbase8.Driver");
    ds.setJdbcUrl("jdbc:kingbase8://127.0.0.1:54321/TEST");
    ds.setUser("SYSTEM");
    ds.setPassword("SYSTEM");
    ds.setInitialPoolSize(5);
    ds.setMinPoolSize(5);
    ds.setMaxPoolSize(50);
    ds.setAcquireIncrement(3);
    ds.setIdleConnectionTestPeriod(10);
    ds.setPreferredTestQuery("SELECT 1");
    ds.setMaxIdleTime(1800);
    return ds;
}

注意: 巡檢太頻繁(如 <5s)會(huì)浪費(fèi)資源;查詢(xún)語(yǔ)句盡量輕。

4.3 Druid(生產(chǎn)推薦 + 可視化)

優(yōu)點(diǎn):SQL 監(jiān)控、慢 SQL、Wall 防注入、Web 控制臺(tái)一站式。

application.yml配置

spring:
  datasource:
    druid:
      driver-class-name: com.kingbase8.Driver
      url: jdbc:kingbase8://127.0.0.1:54321/TEST
      username: SYSTEM
      password: MANAGER
      initial-size: 5
      max-active: 50
      min-idle: 5
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 1800000
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      filters: stat,wall,log4j2
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        reset-enable: false
        login-username: admin
        login-password: admin123

SpringBoot配置方式

@Configuration
public class DruidConfig {
    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
    @Bean
    public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() {
        ServletRegistrationBean<StatViewServlet> bean =
            new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        bean.addInitParameter("loginUsername", "admin");
        bean.addInitParameter("loginPassword", "admin123");
        bean.addInitParameter("resetEnable", "false");
        return bean;
    }
}

控制臺(tái)路徑:/druid/index.html

賬號(hào)密碼務(wù)必生產(chǎn)自定義 + 限制 IP

4.4 HikariCP(SpringBoot默認(rèn) / 高性能首選)

特點(diǎn):?jiǎn)?dòng)快、延遲低、參數(shù)少、容錯(cuò)好。

application.yml配置

spring:
  datasource:
    hikari:
      driver-class-name: com.kingbase8.Driver
      jdbc-url: jdbc:kingbase8://127.0.0.1:54321/TEST
      username: SYSTEM
      password: SYSTEM
      minimum-idle: 5
      maximum-pool-size: 50
      connection-timeout: 10000
      idle-timeout: 600000
      max-lifetime: 1800000
      validation-timeout: 5000
      connection-test-query: SELECT 1
      pool-name: KingbaseHikariCP
      auto-commit: true
      leak-detection-threshold: 60000

SpringBoot配置方式

@Configuration
public class HikariTunedConfig {
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.hikari")
    public HikariDataSource hikariDataSource() {
        HikariDataSource ds = new HikariDataSource();
        ds.addDataSourceProperty("cachePrepStmts", "true");
        ds.addDataSourceProperty("prepStmtCacheSize", "250");
        ds.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        ds.addDataSourceProperty("useServerPrepStmts", "true");
        return ds;
    }
}


五、總結(jié)

如果把數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)想成辦公室喝水:別每次口渴才跑去打井(臨時(shí)建連接),而是先備好一排干凈水杯(連接池)。

在 Spring Boot + KingbaseES 里,HikariCP 就像那臺(tái)又快又省心的新式飲水機(jī),默認(rèn)首選;

Druid 像帶大屏的智能款,能看水量、過(guò)濾雜質(zhì)(監(jiān)控與防護(hù)),適合需要可視化和審計(jì)的團(tuán)隊(duì);

DBCP、C3 P0 則更像老設(shè)備,除非歷史原因暫時(shí)換不動(dòng),否則不用再投入。

真正的優(yōu)化不是把“杯子”堆得越多越好,而是先弄清高峰時(shí)有多少人會(huì)來(lái)、每個(gè)人平均用多久,然后設(shè)一個(gè)剛好撐得住又不浪費(fèi)的位置,再盯慢查詢(xún)和長(zhǎng)事務(wù),及時(shí)清理“卡著不放的杯子”。一句話(huà):先選對(duì)(優(yōu)先 Hikari,需監(jiān)控加 Druid),再測(cè)清楚,再精調(diào),持續(xù)看指標(biāo),系統(tǒng)就會(huì)既穩(wěn)又順。

到此這篇關(guān)于SpringBoot連接KingbaseES數(shù)據(jù)庫(kù)連接池實(shí)戰(zhàn)指南的文章就介紹到這了,更多相關(guān)SpringBoot連接KingbaseES連接池內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Mybatis框架由淺入深全解析中篇

    Java?Mybatis框架由淺入深全解析中篇

    MyBatis是一個(gè)優(yōu)秀的持久層框架,它對(duì)jdbc的操作數(shù)據(jù)庫(kù)的過(guò)程進(jìn)行封裝,使開(kāi)發(fā)者只需要關(guān)注SQL本身,而不需要花費(fèi)精力去處理例如注冊(cè)驅(qū)動(dòng)、創(chuàng)建connection、創(chuàng)建statement、手動(dòng)設(shè)置參數(shù)、結(jié)果集檢索等jdbc繁雜的過(guò)程代碼本文將為大家深入的介紹一下MyBatis的使用
    2022-07-07
  • Java8加java10等于Java18的版本查看及特性詳解

    Java8加java10等于Java18的版本查看及特性詳解

    這篇文章主要為大家介紹了Java?8加java10等于Java18的各個(gè)版本要點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Java設(shè)計(jì)模式之迭代器模式解析

    Java設(shè)計(jì)模式之迭代器模式解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之迭代器模式解析,迭代器模式提供一個(gè)對(duì)象來(lái)順序訪(fǎng)問(wèn)聚合對(duì)象中的一系列數(shù)據(jù),而不暴露聚合對(duì)象的內(nèi)部表示,本文提供了部分代碼,需要的朋友可以參考下
    2023-09-09
  • Java調(diào)用Shell命令的方法

    Java調(diào)用Shell命令的方法

    這篇文章主要介紹了Java調(diào)用Shell命令的方法,實(shí)例分析了java調(diào)用shell命令的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • SpringDataJpa的@Query注解報(bào)錯(cuò)的解決

    SpringDataJpa的@Query注解報(bào)錯(cuò)的解決

    這篇文章主要介紹了SpringDataJpa的@Query注解報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 如何通過(guò)海康威視設(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開(kāi)發(fā)攝像頭車(chē)牌識(shí)別詳解

    如何通過(guò)??低曉O(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開(kāi)發(fā)攝像頭車(chē)牌識(shí)別詳解

    這篇文章主要介紹了如何通過(guò)??低曉O(shè)備網(wǎng)絡(luò)SDK進(jìn)行Java二次開(kāi)發(fā)攝像頭車(chē)牌識(shí)別的相關(guān)資料,描述了如何使用海康威視設(shè)備網(wǎng)絡(luò)SDK進(jìn)行車(chē)牌識(shí)別和圖片抓拍的開(kāi)發(fā)流程,包括遇到的問(wèn)題及其解決辦法,需要的朋友可以參考下
    2025-02-02
  • SVN 安裝教程之服務(wù)器和客戶(hù)端

    SVN 安裝教程之服務(wù)器和客戶(hù)端

    這篇文章主要介紹了SVN 安裝教程之服務(wù)器和客戶(hù)端的相關(guān)資料,這里對(duì)安裝步驟進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下
    2016-11-11
  • Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    Java Spring分別實(shí)現(xiàn)定時(shí)任務(wù)方法

    這篇文章主要為大家詳細(xì)介紹了Java與Spring設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法,定時(shí)任務(wù)的應(yīng)用場(chǎng)景十分廣泛,如定時(shí)清理文件、定時(shí)生成報(bào)表、定時(shí)數(shù)據(jù)同步備份等
    2022-07-07
  • Sentinel熱點(diǎn)規(guī)則示例詳解分析

    Sentinel熱點(diǎn)規(guī)則示例詳解分析

    這篇文章主要介紹了何為熱點(diǎn)?熱點(diǎn)即經(jīng)常訪(fǎng)問(wèn)的數(shù)據(jù)。很多時(shí)候我們希望統(tǒng)計(jì)某個(gè)熱點(diǎn)數(shù)據(jù)中訪(fǎng)問(wèn)頻次最高的 Top K 數(shù)據(jù),并對(duì)其訪(fǎng)問(wèn)進(jìn)行限制
    2021-09-09
  • java?Web實(shí)現(xiàn)用戶(hù)登錄功能圖文教程

    java?Web實(shí)現(xiàn)用戶(hù)登錄功能圖文教程

    這篇文章主要給大家介紹了關(guān)于java?Web實(shí)現(xiàn)用戶(hù)登錄功能的相關(guān)資料,在開(kāi)發(fā)Web應(yīng)用程序中,用戶(hù)登錄是一個(gè)常見(jiàn)的功能,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評(píng)論

谷城县| 塔河县| 九龙城区| 五莲县| 边坝县| 绥滨县| 平阳县| 兰溪市| 香格里拉县| 老河口市| 汕头市| 南充市| 拉萨市| 阳山县| 涡阳县| 宣威市| 巨野县| 福清市| 城步| 平潭县| 长白| 南陵县| 瓦房店市| 安仁县| 台湾省| 康平县| 湘潭县| 泰来县| 凤冈县| 石泉县| 浦县| 岐山县| 土默特左旗| 呼和浩特市| 会昌县| 陆丰市| 玉溪市| 巫山县| 佛冈县| 石阡县| 耒阳市|