标签: connection-pooling

有没有人有ADO.NET连接池与create-and-destroy方法的性能指标?

我正在使用WCF,SQL Server和ADO.NET.我正在研究数据访问层的两个实现选项.

  1. 使用连接池的企业库
  2. 不使用连接池的自定义解决方案.每次访问数据库时,都会创建,使用然后销毁连接.

选项2如下所示:

using (var connection = new SqlConnection(...)){...}
Run Code Online (Sandbox Code Playgroud)

这两者之间的性能差异是什么?什么时候汇集连接是有意义的?

sql-server performance ado.net connection-pooling

1
推荐指数
1
解决办法
236
查看次数

ConnectionPool的设计

当有人要求你在Java面试中为连接池编写(做/描绘)设计时,你通常会写什么.

您是否为连接池编写代码或者是否描述了类图.有人可以解释一下连接池的设计.

java design-patterns connection-pooling

1
推荐指数
1
解决办法
1314
查看次数

有关asp.net中最大池大小的问题

我一直在项目中的一个小文件管理器模块上工作,其中一个文件夹列表显示在树视图中.我已经在javascript中做了所有的事情.每次我点击一个节点时,数据列表都会被提取到一个datareader并填充在前端.但是当我在IIS中部署应用程序时,在大约18次后续点击后,IIS将暂停,我必须重新重置它.当我检查事件查看器时,我收到以下错误

异常类型:InvalidOperationException异常消息:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.

因此,在web.config中的连接字符串中,我将池设置为True,最大池大小为200,问题解决了.

但我想知道以这种方式使用连接池大小是一个好习惯.或者我们如何阻止打开这么多连接.谢谢!

c# asp.net connection-pooling

1
推荐指数
1
解决办法
8877
查看次数

如何在Java Servlet应用程序上为每个用户创建一个数据库连接?

我正在使用Java Servlets开发一个网站,我的研究表明,最好每个用户保持一个数据库连接(而不是每次只有一个连接在后台或者每次交易需要时连接到数据库)被制造).但是,我不知道如何做到这一点.我目前正在做的是在我的数据访问对象类中

private static Connection conn;
Run Code Online (Sandbox Code Playgroud)

我有一个HTTPSessionListener-on sessionCreated事件,我使用这个静态"conn"变量连接到数据库,并且在sessionDestroyed事件中我断开了"conn"变量:

...在我的"MySessionListener"中......

public void sessionCreated(HttpSessionEvent sessionEvent) {
    System.out.println("Session created!");
    DAO.connect();

}

public void sessionDestroyed(HttpSessionEvent sessionEvent) 
{
    System.out.println("Session destroyed");
    String user = (String) sessionEvent.getSession().getAttribute("userid" );
    if (user != null) DAO.signUserOut(user);
    DAO.disconnect();
}
Run Code Online (Sandbox Code Playgroud)

现在问题是:

  1. 我担心这种方式我本质上会降级为只有一个人人共享的连接(而不是我想要的每个用户的连接),只是如果没有用户我会不时断开连接.正确?
  2. 如果有多个用户在线并且一个人关闭了他们的会话,他们将为每个人关闭连接,直到其他人开始会话并为每个人创建新连接,对吗?我不能很好地测试这个,因为我在我的笔记本电脑上本地测试它有3个浏览器,但即使我关闭了一个浏览器上有我的网站,会话也不会立即死亡,我不知道到底发生了什么.我所知道的是,有时我得到一个例外,说"连接关闭后不允许任何交易".

java mysql servlets connection-pooling

1
推荐指数
1
解决办法
2416
查看次数

finally块是否正确关闭数据库连接的位置?

可能重复:
java.sql.Connection线程安全吗?

我已经完成了一些教程.
他们说通过finally块关闭数据库连接.
但我心里有一个问题:

想想两个线程正在主动读取一个连接并且一个线程完成其工作并关闭连接的场景.那么另一个会发生什么?

第二个线程能够完成他的任务吗?

如果我的问题无效,请告诉我,请告诉我最佳解决方案.

java database-connection connection-pooling jdbc

1
推荐指数
1
解决办法
299
查看次数

Java - mysql连接池的Singleton模式 - 连接太多

我编写了下面的代码 - 我希望DataSource是一个单例,并使用枚举习惯用于单例.Data source rejected establishment of connection, message from server: "Too many connections"经过一段时间后我得到了很多- 我的Singleton模式的实现是错误的还是原因在于其他地方?

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

class DBConnectionPool {

    private DataSource ds = null;

    private DBConnectionPool() {
        try {
            Context context = new InitialContext();
            Context envctx = (Context) context.lookup("java:comp/env");
            ds = (DataSource) envctx.lookup("jdbc/TestDB");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static enum PoolSingleton {
        POOL_INSTANCE;

        private static final DBConnectionPool singleton = new DBConnectionPool(); …
Run Code Online (Sandbox Code Playgroud)

java mysql singleton connection-pooling tomcat7

1
推荐指数
1
解决办法
4783
查看次数

何时使用数据库连接池

我正在使用Java GUI,我经常需要连接到数据库,但我只想使用连接语句一次,而不是每次使用它时写入整个事物.我想我可能会在整个系统中连接20次左右.所以我想知道在哪种情况下最好使用连接池?

java database-connection connection-pooling

1
推荐指数
1
解决办法
985
查看次数

如何配置(弹簧)WMQ的JMS连接池

我正在尝试在spring/camel中为Websphere MQ配置JMS连接池.当我试图从spring使用CachingConnectionFactory时,我看到了类强制转换异常.无法从WMQ找到一个池,有没有人与WMQ建立连接池,我没有找到任何例子.ActiveMQ有很多例子.

这是我到目前为止,即产生类强制转换异常.

<bean id="inCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="inboundMqConnectionFactory1" />
    <property name="sessionCacheSize" value="5" />
</bean>

<bean id="inboundWebsphereMq1" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="inCachingConnectionFactory" />
    <property name="destinationResolver" ref="jmsDestinationResolver" />
    <property name="transacted" value="true" />
    <property name="transactionManager" ref="txManager1" />
</bean>

<bean id="inboundMqConnectionFactory1" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName" value="${isi.inbound.queue.host2}" />
    <property name="port" value="${isi.inbound.queue.port}" />
    <property name="queueManager" value="${isi.inbound.queue.queuemanager2}" />
    <property name="channel" value="${isi.inbound.queue.channel2}" />
    <property name="transportType" value="${isi.queue.transportType}" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我看到的例外就在这里

试图恢复.原因:com.sun.proxy.$ Proxy37无法强制转换为com.ibm.mq.jms.MQQueueSession

spring connection-pooling ibm-mq

1
推荐指数
1
解决办法
1万
查看次数

WEB-INF/context.xml下的Tomcat连接池还是TOMCAT_HOME/conf/server.xml?

这是我第一次尝试在tomcat(版本8)中建立连接池,我有点困惑.看来我有两个选项可用,1)我可以添加类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Specify a JDBC datasource for oracle -->
    <Resource name="jdbc/testdb" 
              auth="Container"
              type="javax.sql.DataSource" 
              username="DB_USERNAME" 
              password="DB_PASSWORD"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@xxx:1525:dbname"
              maxActive="10" 
              maxIdle="4" />
</Context>
Run Code Online (Sandbox Code Playgroud)

在我的项目WEB-INF文件夹中名为"context.xml"的文件中.或者,2)我可以添加这样的东西:

<Context path="/dbcp" docBase="dbcp" debug="5"
reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB" auth="Container"
   type="javax.sql.DataSource" removeAbandoned="true"
   removeAbandonedTimeout="30" maxActive="100"
   maxIdle="30" maxWait="10000" username="kunal"
   password="java_facier"
   driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://localhost/dbcptest"/>

</Context>
Run Code Online (Sandbox Code Playgroud)

在TOMCAT_HOME/conf/sever.xml中,然后添加:

<resource-ref>
    <description> DB Connection Pooling</description>
    <res-ref-name> jdbc/TestDB</res-ref-name>
    <res-type> javax.sql.DataSource</res-type>
    <res-auth> Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)

到我的项目中的WEB-INF/web.xml文件...

如果我在这两种情况下都是正确的,哪一个更好用?另外我会把我的数据库供应商jdbc-driver放在哪里?

java sql eclipse tomcat connection-pooling

1
推荐指数
1
解决办法
3618
查看次数

如何在启动时使node.js mysql连接池可用

每次运行我的showData.js脚本时都会调用它

var pool  = mysql.createPool({
Run Code Online (Sandbox Code Playgroud)

有没有办法在node.js服务器启动时创建连接池?

我已经尝试将createPool添加到server.js但是当我调用时,我似乎无法从我的showData.js脚本中访问该对象

pool.getConnection(function(err,connection){
Run Code Online (Sandbox Code Playgroud)

是否有必要在node.js服务器启动时启动连接池?

即使在调用connection.release并且脚本关闭后,mysql连接池是否仍然存在

编辑 @Marco,我得到了ReferenceError:池没有定义.我知道问题是我没有将池拉入showData.js.根据node.js,可以多次加载模块.

来自https://nodejs.org/api/modules.html

高速缓存

模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.

多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.

如果要让模块多次执行代码,则导出一个函数,然后调用该函数.

这是我最新的设置:

LIB/dbpool.js

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'someco.com',
  user            : 'pinco',
  password        : 'pallino'
});

module.exports = pool;
Run Code Online (Sandbox Code Playgroud)

server.js

const pool = require('./lib/dbpool');
Run Code Online (Sandbox Code Playgroud)

showData.js

'use strict';
module.exports = router => {
    router.route('/show').post((req, res) => {
        pool.query('SELECT * FROM db.users', function(err, rows, fields) {
Run Code Online (Sandbox Code Playgroud)

我是否需要server.js和showData.js中的以下行?

const pool = require('./lib/dbpool');
Run Code Online (Sandbox Code Playgroud)

javascript mysql connection-pooling node.js

1
推荐指数
1
解决办法
3300
查看次数