druid 多数据源_Druid连接池的使用以及注意事项
Druid連接池其實在網上一找一大堆文章,講實話這里也只是作為自己記錄下使用如何使用這個連接池。好的,廢話不多說。
什么是Druid連接池?
Druid首先是一個數據庫連接池。Druid連接池是阿里巴巴開源的數據庫連接池項目。Druid連接池為監控而生,內置強大的監控功能,監控特性不影響性能。內置了StatFilter功能,能采集非常完備的連接池執行信息,Druid連接池內置了一個監控頁面,提供了非常完備的監控信息,可以快速診斷系統的瓶頸。
開始使用
我們簡單的建立一個SpringBoot項目,引入Druid連接池。
<!--實現對 Druid 連接池的自動化配置--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.21</version></dependency> <!-- <dependency>--> <!-- <groupId>com.alibaba</groupId>--> <!-- <artifactId>druid</artifactId>--> <!-- <version>1.0.18</version>--> <!-- </dependency>-->druid-spring-boot-starter實現對 Druid 連接池的自動化配置,在application中進行配置
spring:application:name: druidDemodatasource:url: jdbc:mysql://rm-xxxxxxx.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: xxx # 數據庫賬號password: xxx@ # 數據庫密碼type: com.alibaba.druid.pool.DruidDataSource # 設置類型為 DruidDataSource# Druid 自定義配置,對應 DruidDataSource 中的 setting 方法的屬性druid: # 設置 Druid 連接池的自定義配置。然后 DruidDataSourceAutoConfigure 會自動化配置 Druid 連接池。min-idle: 0 # 池中維護的最小空閑連接數,默認為 0 個。max-active: 20 # 池中最大連接數,包括閑置和使用中的連接,默認為 8 個。filter:stat: # 配置 StatFilter ,對應文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilterlog-slow-sql: true # 開啟慢查詢記錄slow-sql-millis: 5000 # 慢 SQL 的標準,單位:毫秒merge-sql: true # SQL合并配置stat-view-servlet: # 配置 StatViewServlet ,對應文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AEenabled: true # 是否開啟 StatViewServletlogin-username: root # 賬號login-password: root # 密碼其他的什么mapper啥的配置就不說了,相信給位大佬不用說都知道,畢竟都是經常寫的東西。
@SpringBootTest寫個測試類執行以下就知道咯。
然后我們看下監控臺,訪問http://127.0.0.1:8080/druid/datasource.html登錄后
奈斯,以后老大要我查看慢sql就用這個了。
多數據源配置
以上呢是配置的單數據源,那么有些場景呢需要使用到多數據源,這里說下多數據源druid怎么配置的。
spring:application:name: druidDemodatasource:mall:url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_mall?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 數據庫賬號password: root0319@ # 數據庫密碼type: com.alibaba.druid.pool.DruidDataSource # 設置類型為 DruidDataSourcemin-idle: 0 # 池中維護的最小空閑連接數,默認為 0 個。max-active: 20 # 池中最大連接數,包括閑置和使用中的連接,默認為 8 個。# 用戶數據源配置users:url: jdbc:mysql://rm-wz9yy0528x91z1iqdco.mysql.rds.aliyuncs.com/luu_user_center?useSSL=false&useUnicode=true&characterEncoding=UTF-8driver-class-name: com.mysql.jdbc.Driverusername: root # 數據庫賬號password: root0319@ # 數據庫密碼type: com.alibaba.druid.pool.DruidDataSource # 設置類型為 DruidDataSource# Druid 自定義配置,對應 DruidDataSource 中的 setting 方法的屬性min-idle: 0 # 池中維護的最小空閑連接數,默認為 0 個。max-active: 20 # 池中最大連接數,包括閑置和使用中的連接,默認為 8 個。# Druid 自定義配置,對應 DruidDataSource 中的 setting 方法的屬性druid: # 設置 Druid 連接池的自定義配置。然后 DruidDataSourceAutoConfigure 會自動化配置 Druid 連接池。filter:stat: # 配置 StatFilter ,對應文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilterlog-slow-sql: true # 開啟慢查詢記錄slow-sql-millis: 5000 # 慢 SQL 的標準,單位:毫秒merge-sql: true # SQL合并配置stat-view-servlet: # 配置 StatViewServlet ,對應文檔 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AEenabled: true # 是否開啟 StatViewServletlogin-username: root # 賬號login-password: root # 密碼配置類
@Configuration public class DataSourceConfig {/*** 創建 orders 數據源*/@Primary@Bean(name = "mallDataSource")@ConfigurationProperties(prefix = "spring.datasource.mall") // 讀取 spring.datasource.mall配置到 HikariDataSource 對象public DataSource ordersDataSource() {return DruidDataSourceBuilder.create().build();}/*** 創建 users 數據源*/@Bean(name = "usersDataSource")@ConfigurationProperties(prefix = "spring.datasource.users")public DataSource usersDataSource() {return DruidDataSourceBuilder.create().build();}}測試類中測試方法
private Logger logger = LoggerFactory.getLogger(DruidDemoApplicationTests.class);@Resource(name = "mallDataSource")private DataSource ordersDataSource;@Resource(name = "usersDataSource")private DataSource usersDataSource;@Testpublic void test() {// orders 數據源logger.info("[run][獲得數據源:{}]", ordersDataSource.getClass());// users 數據源logger.info("[run][獲得數據源:{}]", usersDataSource.getClass());int a = testMapper.test();System.out.println(a);}這樣就等于配置了多個數據源,具體的怎么用呢就要看具體的場景了。
其實多數據源的配置常用的有三種方式:
擴展Spring的AbstractRoutingDataSource 通過Mybatis 配置不同的 Mapper 使用不同的 SqlSessionTemplate 分庫分表中間件,比如Sharding-JDBC 、Mycat等。這里就不細說咯,后面我們用到了再來記錄下使用過程。
總結
以上是生活随笔為你收集整理的druid 多数据源_Druid连接池的使用以及注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python排课问题_排课问题分析
- 下一篇: requestanimationfram