我是 node.js 的新手,听说过连接池,这对我来说很有意义,因为连接是一项昂贵的操作。
我正在查看用于 mysql 的节点模块,我喜欢 Sequelize 的外观,因为它是一个 ORM。
我不确定是否需要担心 Sequelize 的连接池。我是否只是实例化它并为所有客户端重用它?
var sequelize = new Sequelize('database', 'username'[, 'password'])
Run Code Online (Sandbox Code Playgroud)
另外,我是否需要担心正在执行的并行查询的数量?
例如,如果我遍历一个表并每行执行一个查询。如果有 1000 行或更多行会发生什么?
这些查询是否一次全部执行?
如果是这样,您可以投掷的金额是否有限制?
我想知道我是否可以为一个DB运行多个c3p0数据源,例如:
<bean id="dataSource1" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driverClassName}"/>
<property name="jdbcUrl" value="${db.url}/schema1"/>
<property name="user" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="acquireIncrement" value="1" />
<property name="idleConnectionTestPeriod" value="100"/>
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="50" />
<property name="maxIdleTime" value="1800" />
</bean>
<bean id="dataSource2" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driverClassName}"/>
<property name="jdbcUrl" value="${db.url}/schema2"/>
<property name="user" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="acquireIncrement" value="1" />
<property name="idleConnectionTestPeriod" value="100"/>
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="50" />
<property name="maxIdleTime" value="1800" />
</bean>
Run Code Online (Sandbox Code Playgroud)
它们将由差异持久性服务使用.
谢谢.
如何使用以下信息创建连接池.我想我的URL出错了.
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myDB01.com)(PORT = 1821))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = myDB.com)
)
)
Run Code Online (Sandbox Code Playgroud)
我尝试在URL中指定以下内容,但是没有用
jdbc:oracle:thin:@myDB01.com:1821:myDB.com
Run Code Online (Sandbox Code Playgroud)
这是我在服务器启动日志中看到的异常
oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
Run Code Online (Sandbox Code Playgroud)
注意:我能够成功从Oracle客户端连接到数据库.
我正在使用下面的代码来获取Connection. 我已将该c3p0库用于连接池。
package com.dataSource.c3p0;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSource {
private static DataSource datasource;
private ComboPooledDataSource cpds;
private DataSource() throws IOException, SQLException, PropertyVetoException {
cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.jdbc.Driver"); //loads the jdbc driver
cpds.setJdbcUrl("jdbc:mysql://localhost/test");
cpds.setUser("root");
cpds.setPassword("root");
// the settings below are optional -- c3p0 can work with defaults
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
cpds.setMaxStatements(180);
}
public static DataSource getInstance() throws IOException, SQLException, PropertyVetoException {
if (datasource == null) {
datasource …Run Code Online (Sandbox Code Playgroud) 我需要在调用 REST 服务时发布(到 Graphite)Mongo db 实例的“可用活动连接数”状态。我知道我们可以使用 db.serverStatus() 来了解服务器端连接的详细信息。我希望使用 JAVA API 在客户端获取“可用活动连接数”信息。MongoDB Java Driver API 文档对此没有太大帮助。
我正在使用 Mac OS,最近使用 brew 命令安装了 PostgreSQL。
您知道在配置中的何处可以找到默认连接池限制吗?
我正在提供读/写性能测试,我想确保数据库在默认情况下不受限制。
另外,我在哪里可以访问用于设置例如 100 个连接的配置。
谢谢!
我正在四个 PostgreSQL 工作人员之间设置双向复制,并且我想让我的 Go 数据库连接池处理所有四个工作人员的连接。它应该能够为它们创建多个连接,为任何给定的查询随机选择一个,并在连接断开时进行故障转移。这在 Go 数据库库中可行吗?或者我应该只使用pgBouncer而不是尝试让database/sql或pgx来处理这种平衡?
Sqlite 的连接字符串可以包括使用连接池的选项,例如(伪代码)
Dim connectionString = "Data Source=" + Path + ";" +
"Version=3;" +
"Pooling=True;" +
"Max Pool Size=100;"
Run Code Online (Sandbox Code Playgroud)
我希望有一些额外的类或工厂方法来使用连接池,例如
dim connectionPool = new SqLiteConnectionPool(connectionString)
dim firstConnection = connectionPool.getConnection()
...
firstConnection.dispose()
...
dim secondConnection = connectionPool.getConnection()
Run Code Online (Sandbox Code Playgroud)
但是,我找不到这样的课程。
=>如何返回连接池的连接?
=>如何重用以前返回到池中的连接?
在https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki上搜索“pool”没有给出任何结果。
a) 我是否必须多次调用连接的构造函数?
dim firstConnection = new SqLiteConnection(connectionString)
...
firstConnection.dispose()
dim secondConnection = new SqLiteConnection(connectionString)
Run Code Online (Sandbox Code Playgroud)
多次传递连接字符串对我来说似乎并不直观。
b) 或者我会只创建一次连接并在它关闭/处置后以某种方式唤醒它?
dim connection = new SqLiteConnection(connectionString))
using connection
...
end using
connection.open()
using connection
...
end using
Run Code Online (Sandbox Code Playgroud) 在调用某些 Web 服务的 REST API 期间,我使用 Apache HTTP 客户端进行连接池。
奇怪的是,尽管我使用了 HTTP 连接池,但我的性能并没有提高。
我正在使用Apache HTTP 客户端连接到我的 Web 服务,代码如下来自文档:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(20);
HttpHost host = new HttpHost("abc.com", 80);
cm.setMaxPerRoute(new HttpRoute(host), 50);
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.build();
Run Code Online (Sandbox Code Playgroud)
我正在使用 SpringRestTemplate来包装HttpClient使用 Spring 的 Apache的实现HttpComponentsClientHttpRequestFactory。
但即使我不使用连接池,即。使用SimpleClientHttpRequestFactorySpring,我没有得到性能优势。
我的连接仍然需要相同的时间才能完成。
我所做的是实现 HTTP 连接池的正确方法吗?难道我做错了什么?
请让我知道是否需要我方提供更多信息。
我试图找到可用于 Postgres DB 的不同中间件。每个人都在推荐 PgBouncer 和 PgPool II。我可以使用的其他中间件列表是什么。
java ×3
jdbc ×3
postgresql ×3
datasource ×2
benchmarking ×1
c# ×1
c3p0 ×1
connection ×1
go ×1
jdbc-odbc ×1
jpa ×1
mongodb ×1
mysql ×1
node.js ×1
pgbouncer ×1
pgpool ×1
replication ×1
resttemplate ×1
sequelize.js ×1
spring ×1
sqlite ×1
weblogic ×1