龙华网站(建设信科网络),优秀 网站设计 蓝色,电子工程世界app下载,物流网站建设公司哪家好1、前言
SpringBoot不用我多介绍了吧#xff0c;目前后端最流行的框架。后端开发人员最基本的要求。 Druid数据库连接池#xff0c;出自国内 ”java圣地 阿里巴巴。 Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统#xff0c;旨在快速处理大规模…1、前言
SpringBoot不用我多介绍了吧目前后端最流行的框架。后端开发人员最基本的要求。 Druid数据库连接池出自国内 ”java圣地 阿里巴巴。 Druid是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统旨在快速处理大规模的数据并能够实现快速查询和分析。
Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到这使其具有快速的交互式查询能力。同时Druid的数据在系统更新时依然可用规模的扩大和缩小都不会造成数据丢失这意味着它具有高可用性。Druid出自Alibaba已实现每天能够处理数十亿事件和TB级数据说明其具有可扩展性。在实际应用场景中例如需要交互式聚合和快速探究大量数据、需要实时查询分析、具有大量数据等情况下Druid都可以发挥出其高可用、高容错、高性能的优势。
总的来说Druid是一个功能强大、性能优异且具有良好扩展性的分布式系统适用于处理大规模数据并支持实时查询和分析。
如果想了解Druid数据库连接池在Java中最基本的使用可以看我之前的文章 Alibaba Druid数据库连接池直接起飞
其他文档的链接地址:
GitHub地址 https://github.com/alibaba/druid官方文档: https://github.com/alibaba/druid/wiki/Druid连接池介绍Starter文档: https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
2、Druid数据库连接池的基本参数
参数名称默认值说明driver-class-namenull数据库连接驱动usernamenull数据库连接用户名 passwordnull数据库连接密码url null数据库连接的URLinitial-size0初始化时建立连接的个数max-active 8最大连接池数量min-idle0最小连接池数量max-wait-1获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。use-global-data-source-stattrue是否开启SQL统计validation-querynull用来检测连接是否有效的sql要求是一个查询语句常用SELECT 1 FROM DUALvalidation-query-timeout-1检测连接是否有效的超时时间单位是秒login-timeoutnullDruid Monitor登录超时时间transaction-query-timeoutnull事务查询超时时间query-timeoutnull查询超时时间test-while-idletrue建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。time-between-eviction-runs-millis60s配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒min-evictable-idle-time-millis30分钟配置一个连接在池中最小生存的时间单位是毫秒max-evictable-idle-time-millis7小时配置连接池中连接在时间段内一直空闲被逐出连接池的时间单位毫秒。default-read-only null设置连接为只读状态default-transaction-isolation null事务的隔离级别
以上标红的属性都是常用的属性,Druid连接池的参数有很多,在后面的配置中可以自行配置
3、实践
项目环境:
IDEA 2023SpringBootMybatis-pluslombokDruid-starterMySQL 8.0
3.1、导入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional
/dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactId
/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version
/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.20/version
/dependency3.2、yaml文件
server:port: 8888spring:data:redis:host: localhostport: 6379main:lazy-initialization: truebanner-mode: offdatasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/taobao?serverTimezoneAsia/Shanghaiinitial-size: 1 # 初始化时建立连接的个数max-active: 1 # 最大连接池数量min-idle: 1 # 最小连接池数量max-wait: 6000 # 获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
# pool-prepared-statements: false # 是否缓存preparedStatement MySQL建议关闭use-global-data-source-stat: true # 开启SQL统计validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql要求是一个查询语句常用SELECT 1 FROM DUALvalidation-query-timeout: 3000 # 检测连接是否有效的超时时间单位是秒login-timeout: 3000 # 登录超时时间transaction-query-timeout: 3000 # 事务查询超时时间query-timeout: 3000 # 查询超时时间
# test-on-borrow: false # 申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。
# test-on-return: false # 归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能test-while-idle: true # 建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
# time-between-eviction-runs-millis: 30000 # 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒
# min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间单位是毫秒
# max-evictable-idle-time-millis: 600000 #配置连接池中连接在时间段内一直空闲被逐出连接池的时间单位毫秒。default-read-only: false # 是否只读default-transaction-isolation: 4 #事务的隔离级别web-stat-filter: # 开启Druid过滤器enabled: true # 开启StatFilterurl-pattern: /*exclusions: *.jpg,*.png,*.jpegprofile-enable: true # 是否监控单个URL调用的SQL列表stat-view-servlet: # 开启Druid Servlet拦截enabled: true # 是否启用StatViewServleturl-pattern: /druid/* #监控页面拦截urlreset-enable: true #是否启用重置功能login-password: druidlogin-username: druidaop-patterns:- /database/listfilter: # 进行慢SQL展示stat:enabled: trueslow-sql-millis: 500log-slow-sql: true # 以日志的形式输入SQLmerge-sql: true # 是否合并SQLdb-type: mysqlmybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: falsemapper-locations: classpath:/mapper/*.xml3.3、运行
项目启动后, 我们可以直接访问http://localhost:项目端口/druid/login.html就可以进行Druid Monitor. 这些页面都是Druid已经写好了的,就在我们引入的Jar包或者依赖里头:
3.3.1、登录页面
我们可以在登录页面输入我们设置好的login-username用户名和login-password密码进行登录.
3.3.2 、首页
我们可以在首页看到一些列运行的环境.
3.3.3 、SQL监控
因为我们配置了测试连接, 所以在项目启动后会进行一次连接测试, 连接测试的SQL就是validation-query参数所配置的SQL. 从图中也可以看出进行了连接测试
3.4 、编写controller进行测试
本项目使用了Mybatis-plus作为ORM框架, 具体的DAO层就是那么一套逻辑, 所以省略, 只显示controller接口层.
RestController
RequestMapping(value /database)
public class ProductController {Resourceprivate ProductMapper productMapper;GetMapping(value /list)public ListProduct productList(){return productMapper.selectPage(new Page(1, 10), null).getRecords();}}我们可以很清楚的看到SQL的执行被监听到了. 因为我执行了分页的操作, Mybatis-plus的底层是执行了统计数量和进行分页的两条SQL, 都被监听到了.
3.5 、其他参数
当我们能够进入到Druid Monitor后, 可以进入数据源页面. 表格最左侧的参数就是Druid可以配置的参数, 我这里使用的是中文进行展示, 伙伴们可以切换成英文进行展示.