连接池

SpringBoot学习(五)—— springboot快速整合Druid

你说的曾经没有我的故事 提交于 2019-12-05 16:38:06
Druid连接池 简介 由阿里巴巴开源的druid连接池是目前综合实力最突出的数据库连接池,而且还提供了监控日志功能,能够分析SQL执行情况。 引入druid连接池 pom.xml中加入 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> application.properties中加入 # druid spring.datasource.type=com.alibaba.druid.pool.DruidDataSource # 连接池初始化大小,最小,最大 spring.datasource.initialSize=10 spring.datasource.minIdle=10 spring.datasource.maxActive=30 # 连接等待超时时间 spring.datasource.maxWait=60000 # 多久检测需要关闭的空闲连接 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 一个连接在池中最小生存的时间 spring.datasource.minEvictableIdleTimeMillis=300000 #

数据库链接池

风流意气都作罢 提交于 2019-12-05 07:33:22
什么是数据库链接池?以及作用? ''' 数据库链接池的基本原理:为数据库建立一个缓冲池,预先在池中放入一定数量的数据库链接管道,需要时,从链接池中取出管道进行使用,操作完毕后,再将链接放回到池子中,从而避 免了频繁的链接数据库,资源的申请和释放的性能损耗 由于数据库链接得到重用,避免了频翻创建,释放链接引起的大量性能开销,在减少系统消耗的基础上,增进了系统环境的平稳性,更快的系统响应速度 ''' 数据库链接池函数多线程版 from DBUtils.PooledDB import PooledDB from concurrent.futures import ThreadPoolExecutor POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数 mincached=2, # 初始化时,链接池中至少创建的链接,0表示不创建 blocking=True, #连接池中如果没有可用连接后, #是否阻塞等待。True,等待;False,不等待然后报错 ping=0, # ping MySQL服务端,检查是否服务可用。 # 如:0 = None = never, 1 = default = whenever it is requested, # 2 =

JDBC-执行sql语句的API

懵懂的女人 提交于 2019-12-05 06:51:22
1.JDBC为什么会存在? 市面上有如此多的数据库厂商,Mysql、Oracle等等,他们使用不同的网络协议,Java开发人员为每一个数据库编写一套接口是不可能完成的,所以需要一个统一的接口。 从使用者来看,使用者不可能清楚每一个数据库的驱动程序。 2.JDBC的实现基于这样的思想:根据JDBC编写的程序能够与一个 驱动管理器 通信,驱动管理器通过驱动程序与实际的数据库进行通信。 3.如何使用JDBC与数据库连接?   使用mysql作为例子:(mysql-connection-java jar) DriverManager 驱动管理器 注册驱动: 为避免注册两次,使用Class.forName(“com.mysql.cj.jdbc.Driver”) 获取连接: DriverManager.getConnection(URI,root,password) 返回connection对象. connection对象 创建执行sql语句的对象 connection.prepareStatement() 返回preparedStatement对象 进行事务管理 connection.setAutoCommit(true) connection.commit()手动提交 connection.rollback() preparedStatement对象 执行sql语句

applicationContext.xml配置druid连接池

此生再无相见时 提交于 2019-12-05 06:38:55
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www

SQLAlchemy session 使用问题

ε祈祈猫儿з 提交于 2019-12-05 00:48:29
SQLAlchemy session 使用问题 在更改 SQLAlchemy Session 从每次请求都创建到共享同一个 Session 之后遇到了如下问题: StatementError: (sqlalchemy.exc.InvalidRequestError) Can’t reconnect until invalid transaction is rolled back [SQL: ] 或者是 raised unexpected: OperationalError(“(_mysql_exceptions.OperationalError) (2006, ‘MySQL server has gone away’)”,) 错误是 SQLAlchemy 抛出。原因是你从 pool 拿的 connection 没有以 session.commit 或 session.rollback 或者 session.close 放回 pool 里。这时 connection 的 transaction 没有完结(rollback or commit)。 而不知什么原因(recyle 了,timeout 了)你的 connection 又死掉了,你的 sqlalchemy 尝试重新连接。由于 transaction 还没完结,无法重连。 正确用法是确保 session 在使用完成后用

数据库连接池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)

蓝咒 提交于 2019-12-05 00:42:21
本文主要是对这hikariCP,druid,tomcat-jdbc,dbcp,c3p0几种连接池的详细的功能和性能测试对比,通过这次测试对目前主流的一些连接池做一个全面的对比,从而给业务系统一个最佳的推荐。 测试结论 性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。 druid功能最为全面,sql拦截等功能,统计数据较为全面,具有良好的扩展性。 综合考虑到目前venus已经支持druid且hikariCP并未发现有太多大规模的生产实践的案例,后续将推荐使用druid并把codegen生成的代码默认连接池为druid。 可开启prepareStatement缓存,对性能会有大概10%的提升。 功能对比 功能 dbcp druid c3p0 tomcat-jdbc HikariCP 是否支持PSCache 是 是 是 否 否 监控 jmx jmx/log/http jmx,log jmx jmx 扩展性 弱 好 弱 弱 弱 sql拦截及解析 无 支持 无 无 无 代码 简单 中等 复杂 简单 简单 更新时间 2018.1.13 2018.1.14 2017.5.4 2018.1.14 特点 依赖于common-pool 阿里开源,功能全面 历史久远,代码逻辑复杂,且不易维护 优化力度大,功能简单

Hibernate连接数据库超时设置

天大地大妈咪最大 提交于 2019-12-04 22:15:36
com.MySQL.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 解决办法: 如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. 不用hibernate的话, connection url加参数:

Spring配置文件applicationContext.xml(3)开启事务和注解

南笙酒味 提交于 2019-12-04 20:39:45
<?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xmlns si= "http://www.w3.org/2001/XMLSchema-instance" xmlns:context= "http://www.springframework.org/schema/context" xmlns:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-2.5.xsd http: //www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-2.5.xsd http: //www

jdbc

假装没事ソ 提交于 2019-12-04 20:23:49
1、传统方式 src目录下 java中虽然没有提供连接池,但是提供了连接池的接口DataSource,所有的连接池必须要实现这一接口 2、dbcp连接池 3、c3p0连接池 ------------------------------------------------------------- 以上操作需要的jar包 来源: https://www.cnblogs.com/djlindex/p/11881528.html

业务系统压测实践建议(转)

Deadly 提交于 2019-12-04 09:18:24
转载至: 业务系统压测实践建议 总原则 无论是对HTTP接口、Thrift接口或者Web Service接口进行压测,发起测试的机器都要尽可能靠近被压测的应用服务器,这样才能得到更准确的压测结果(有效减少网络传输开销带来的干扰) 排除非业务因素影响:压测前先确认硬件(CPU、内存、IO、网络等)、被压测接口用到的中间件(Tomcat、Nginx、Redis、RabbitMQ等)的配置信息和健康状况。如果存在硬件故障或者中间件故障,则需要先排除掉 确定压测目标,比如是压测tps、内存消耗量还是其他如要能支持多少并发用户,达到多少tps 确定一个压测基准,比如压测某个HTTP API接口的tps时,可以先压测心跳检测接口(业务逻辑最少),比如压测得到5000tps,那么就可以断定其他业务逻辑更复杂的HTTP API接口的极限tps不可能超过5000tps,无论你怎么优化(这里的优化特指业务性能优化,如果中间件优化了,则需要重新确定压测基准) 压测前最好用ping、traceroute查看下网络连通状况 一般先对单台服务器做压测,单台服务器压测达到期望的压测指标后再扩展到集群环境对多台服务器做压测 压测服务器尽可能和线上服务器一致或者类似,确认发起测试的服务器本身不存在性能瓶颈(比如还没开始压测,发起测试的机器CPU就已经100%、测试机器在创建多一些线程的时候CPU增长很快)