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

MySql中的數據庫連接池詳解

 更新時間:2025年03月12日 14:45:43   作者:`moon`曉龍  
這篇文章主要介紹了MySql中的數據庫連接池方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

MySql數據庫連接池

1、概念

JDBC數據連接池:在做開發(fā)是不會單獨寫一個連接,都是使用數據庫連接池。

2、為什么會出現數據庫連接池

一個項目中,會有很多的用戶訪問,如果是和之前一樣單次連接,那么每次連接數據庫都要創(chuàng)建數據庫連接對象,來n個用戶九創(chuàng)建n個,這樣的高并發(fā),服務器受不了。而且用完后關閉連接,浪費資源,如果在關閉的時候出現異常未能關閉連接,就會出現內存泄漏(對象無法回收)

如果沒有池化技術,就相當于銀行開門,然后業(yè)務員服務你一個人,然后關門,下個人來了再開門,這樣很浪費資源

使用了數據庫連接池之后,我們在開發(fā)中就不需要寫連接數據庫代碼了

3、原理

  • 和線程池類似,規(guī)定了最大的承載量,比如有留出了5個連接對象,那么第六個人就需要排隊
  • 如果使用完畢去關閉數據庫連接對象,不會真的關閉,只是被連接池回收,然后給排隊的下一個人使用
  • 相當于銀行開門,開門以后業(yè)務員服務客戶,沒有客戶的時候就等待,然后到點關門,業(yè)務員不再工作

4、數據庫連接池的提供商

數據庫連接池的有很多,比較熱門的有:

  • DBCP
  • 是tomcat自帶的,相對于C3P0來說速率較快,但是不穩(wěn)定
  • C3P0
  • 速率比較慢,但是非常穩(wěn)定
  • Druid(德魯伊)
  • 是阿里提供,最常用的,它結合了DBCP和C3P0各自的優(yōu)點

5、DataSource數據源

  • 實現接口DataSource就可以編寫數據源
  • 通過DataSource替換了DriverManager,相當于在各個數據庫廠商提供的驅動的基礎上,再次進行包裝

6、DBCP

  • 導入jar包
  • java中使用
public class DBCPTest {
	
	private static DataSource dataSource = null;
	
	public static void DbcpTest() {
		try {
			// 讀取文件配置
			InputStream config = DBCPTest.class.getClassLoader().getResourceAsStream("resources/config.properties");
			Properties prop = new Properties();
			prop.load(config);
			
			// 創(chuàng)建數據源 工廠模式
			dataSource = BasicDataSourceFactory.createDataSource(prop);
			
			// 從數據源中獲取連接
			Connection connection = dataSource.getConnection();
		
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
  • 配置文件
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=19981104

7、C3P0

  • 導入jar包
  • java中使用
public static void main(String[] args) throws PropertyVetoException, SQLException {
		// 實例化C3P0提供的連接池
		ComboPooledDataSource cpds = new ComboPooledDataSource();
		// 加載當前使用的數據庫
		cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
		cpds.setJdbcUrl("jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&useSSL=true");
		cpds.setUser("root");
		cpds.setPassword("19981104");
		// 通過Datasource數據源獲得連接對象
		Connection connection = cpds.getConnection();
		
		// 設置初始化連接池中的連接對象
		cpds.setInitialPoolSize(2);
		
		
  
    // 也可以通過加載配置文件使用數據庫
		// 在實例化時,去加載配置文件
  	// 這里的配置文件名是xml中的named-config的name
		ComboPooledDataSource cpds2 = new ComboPooledDataSource("intergalactoApp");
		Connection connection2 = cpds2.getConnection();
		System.out.println(connection2);
	}

配置XMl

  • XML是一個文本標記語言,就是使用標簽對組成的語言,進行記錄文本信息
  • XML文件主要的作用就是標記存儲內容的
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <!-- 在這下面配置數據庫信息 -->
  <named-config name="intergalactoApp"> 
  	<!-- 配置驅動,url,user和password -->
  	<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/school?useSSL=true</property>
    <property name="user">root</property>
    <property name="password">password</property>
  
    <property name="acquireIncrement">50</property>
    <property name="initialPoolSize">100</property>
    <property name="minPoolSize">50</property>
    <property name="maxPoolSize">1000</property>

    <!-- intergalactoApp adopts a different approach to configuring statement caching -->
    <property name="maxStatements">0</property> 
    <property name="maxStatementsPerConnection">5</property>

  </named-config>

</c3p0-config>

8、Druid(德魯伊)

  • 導入jar包
  • java中使用
public static void main(String[] agrs) throws Exception {
		
		DruidDataSource dataSource = new DruidDataSource();
		// 不管是誰想要連接數據庫服務器,都需要用戶名,密碼,url,driver
		// dataSource.setDriverClassName(driverClass);
		// dataSource.setUrl(jdbcUrl);
		
		// 讀取配置文件
		InputStream config = DruidTest.class.getClassLoader().getResourceAsStream("resources/config.properties");
		Properties prop = new Properties();
		prop.load(config);
		
		// 使用工廠模式 -- 提供了生產數據源對象的工廠
		// 讀取Druid讀取配置文件
		DataSource dataSource2 = DruidDataSourceFactory.createDataSource(prop);
		// 獲得連接對象
		Connection connection = dataSource2.getConnection();
				
	}

總結

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

相關文章

  • MySQL隨機獲取一條記錄的方法小結

    MySQL隨機獲取一條記錄的方法小結

    隨機獲取一條記錄是在數據庫查詢中常見的需求,在?MySQL?中,有多種方法可以實現隨機獲取一條記錄,每種方法都有其適用的情況和性能特點,在本文中,我們將探討幾種常用的方法,并推薦適合不同情況下的最佳方法,需要的朋友可以參考下
    2024-04-04
  • Mysql 獲取表的comment 字段操作

    Mysql 獲取表的comment 字段操作

    這篇文章主要介紹了Mysql 獲取表的comment 字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • MySQL報錯1040'Too?many?connections'的原因以及解決方案

    MySQL報錯1040'Too?many?connections'的原因以及解決方案

    這篇文章主要給大家介紹了關于MySQL報錯1040'Too?many?connections'的原因以及解決方案,文中通過實例代碼以及圖文介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • MySQL?Prepared?Statement?預處理的操作方法

    MySQL?Prepared?Statement?預處理的操作方法

    預處理語句是一種在數據庫管理系統(tǒng)中使用的編程概念,用于執(zhí)行對數據庫進行操作的?SQL?語句,這篇文章主要介紹了MySQL?Prepared?Statement?預處理?,需要的朋友可以參考下
    2024-08-08
  • MySQL使用UUID_SHORT()的問題解決

    MySQL使用UUID_SHORT()的問題解決

    MySQL的UUID_SHORT()函數是一個用于生成短UUID的函數,該函數返回一個64位的整數,可以用于唯一標識一條數據記錄,本文介紹了MySQL使用UUID_SHORT()的問題解決,感興趣的可以了解一下
    2023-08-08
  • CentOS 7中升級MySQL 5.7.23的坑與解決方法

    CentOS 7中升級MySQL 5.7.23的坑與解決方法

    我們在安裝升級的時候會遇到一些問題,不過可能每個人遇到的問題不一樣,多找找才能解決問題喲,下面這篇文章主要給大家介紹了關于在CentOS 7中升級MySQL 5.7.23遇到的一個坑與解決方法,需要的朋友可以參考下
    2018-10-10
  • MYSQL自增id超過int最大值的解決方案

    MYSQL自增id超過int最大值的解決方案

    這篇文章詳細介紹了MySQL中自增ID超過int最大值的問題,包括現象、原因、解決方案和最佳實踐,建議從緊急止血到長期治理,推薦使用bigint或分布式ID生成器,面試時,應提供完整回答結構,并考慮業(yè)務場景和性能影響,需要的朋友可以參考下
    2026-02-02
  • mysql InnoDB建表時設定初始大小的方法

    mysql InnoDB建表時設定初始大小的方法

    這篇文章主要介紹了mysql InnoDB建表時設定初始大小的方法,需要大家到MYSQL后臺實際操作方可以看到效果
    2013-11-11
  • MySQL下載安裝配置詳細教程?附下載資源

    MySQL下載安裝配置詳細教程?附下載資源

    這篇文章主要介紹了MySQL下載安裝配置詳細教程?附下載資源,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • mysql用戶權限管理實例分析

    mysql用戶權限管理實例分析

    這篇文章主要介紹了mysql用戶權限管理,結合實例形式分析了mysql用戶權限管理概念、原理及用戶權限的查看、修改、刪除等操作技巧,需要的朋友可以參考下
    2020-04-04

最新評論

桦川县| 镇赉县| 兴城市| 灵川县| 岳普湖县| 饶河县| 信丰县| 梁山县| 辽宁省| 昌邑市| 东山县| 清丰县| 鹿邑县| 定州市| 合山市| 客服| 讷河市| 科技| 新昌县| 邻水| 什邡市| 邮箱| 陇西县| 灯塔市| 台江县| 鞍山市| 黔东| 金沙县| 乐平市| 延寿县| 龙州县| 黄山市| 德兴市| 南召县| 新兴县| 平阳县| 华亭县| 涪陵区| 道真| 麦盖提县| 乌兰察布市|