HikariCP

Stella981
• 阅读 681

数据库连接池技术

数据库连接池负责分配、管理和释放数据库的连接。

  1. 数据库连接复用。重复使用现有的数据库连接,可以避免连接频繁建立、关闭的开销。

  2. 统一的连接管理。释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接泄漏。

HikariCP

字节码精简:优化代码,直到编译后的字节码最少,这样,CPU缓存可以加载更多的程序代码;

优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一;

自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描;

自定义集合类型(ConcurrentBag):提高并发读写的效率;

其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究(但没说具体怎么优化)。

数据库连接中断的情况测试:

HikariCP:等待5秒钟后,如果连接还是没有恢复,则抛出一个SQLExceptions 异常;后续的getConnection()也是一样处理;

C3P0:完全没有反应,没有提示,也不会在“CheckoutTimeout”配置的时长超时后有任何通知给调用者;然后等待2分钟后终于醒来了,返回一个error;

Tomcat:返回一个connection,然后……调用者如果利用这个无效的connection执行SQL语句……结果可想而知;大约55秒之后终于醒来了,这时候的getConnection()终于可以返回一个error,但没有等待参数配置的5秒钟,而是立即返回error;

BoneCP:跟Tomcat的处理方法一样;也是大约55秒之后才醒来,有了正常的反应,并且终于会等待5秒钟之后返回error了;

HttpServletRequest的ServletRequest中和都是接口

HttpServletRequest的继承自ServletRequest中 

HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。例如:

getHeader(),  getMethod(),  getSession() 

1.获得客户机信息

    getRequestURL方法返回客户端发出请求的完整

    URL。getRequestURI方法返回请求行中的资源名部分

    。getQueryString方法返回请求行中的参数部分

    。getRemoteAddr方法返回发出请求的客户机的IP地址

    getRemoteHost方法返回发出请求的客户机的完整主机名

    getRemotePort方法返回客户机所用的网络端口号

    getLocalAddr方法返回WEB服务器的IP地址getLocalName方法返回WEB服务器的主机

    名

    getMethod得到客户机请求方式

 2.获得客户机请求头

    getHeader(string name)方法

    getHeaders(String name)方法

    getHeaderNames方法 

 3.获得客户机请求参数(客户端提交的数据)

    getParameter(name)方法

    getParameterValues(String name)方法

    getParameterNames方法

    getParameterMap方法

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java设计思想
 https://blog.csdn.net/qq\_16038125/article/details/80180941池:同一类对象集合连接池的作用 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量
Wesley13 Wesley13
3年前
JdbcTemplate 和 mybatis 的对比
好处:  1.jdbcTemplate是spring对jdbc操作数据库进行的封装,使得开发者可以直接在java文件中编写sql,无需配置xml文件。  2.简单效率快缺点:  1. 使用时创建连接,不使用时立即释放。频繁的连接开启和关闭造成资源的浪费,影响数据库的性能。     解决办法:使用数据库连接池,
Easter79 Easter79
3年前
Tomcat8.5&Mysql8.0配置数据库连接池(DBCP)
DBCP(DataBaseconnectionpool),数据库连接池。是apache上的一个java连接池项目,也是tomcat使用的连接池组件。由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。百度百科(htt
Stella981 Stella981
3年前
Spring Boot + Spring Cloud 实现权限管理系统 后端篇(七):集成 Druid 数据源
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。通过数据库连接池能明显提高对数据库操作的性能。在Java应用程序开发中,常用的连接池有DBCP、C3P0、Proxool等。SpringBoot默认提供
Stella981 Stella981
3年前
Hikaricp简单使用
Hikaricp替换现有的数据库连接池也是很方便的没有时间去测试 现贴出简单的配置 如果使用spring,只需要简单的替换<beanid"hikariDataSource"class"com.zaxxer.hikari.HikariDataSource"destroymethod"s
Wesley13 Wesley13
3年前
MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)
知识点十五:MySQL 的应用程序优化(32)一、访问数据库采用连接池把连接当做对象或设备,统一放在‘连接池’里。凡是需要访问数据库的地方都从连接池里取连接二、采用缓存减少对于MySQL的访问:         
Stella981 Stella981
3年前
Spring Boot:集成Druid数据源
综合概述数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。通过数据库连接池能明显提高对数据库操作的性能。在Java应用程序开发中,常用的连接池有DBCP、C3P0、Proxool等。Spri
Wesley13 Wesley13
3年前
JDBC连接池 JDBCTemplate
1.数据库连接池2.SpringJDBC:JDBCTemplate数据库连接池1.概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对
Stella981 Stella981
3年前
SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、TomcatJDBCConnectionPool、Druid等,不过最近最火的是HiKariCP。HiKariCP号称是业界跑得最快的数据库连接池,自从Spring
弹性数据库连接池探活策略调研(一)——HikariCP | 京东云技术团队
调研背景:数据库连接建立是比较昂贵的操作(至少对于OLTP),不仅要建立TCP连接外还需要进行连接鉴权操作,所以客户端通常会把数据库连接保存到连接池中进行复用。连接池维护到弹性数据库(JED)的长连接,弹性数据库默认不会主动关闭客户端连接(除非报错),但一