我打算用MYSQL.是否有可用的连接池扩展?或者连接的常规做法是什么?这是每个地方使用的那个......
mysqli_connect("localhost", "xxx", "xxx", "test");
Run Code Online (Sandbox Code Playgroud)
人们只使用正常mysql_connect还是pconnect......?我pconnect应该为PConnect 做得更好,有什么设置?
我听过连接池这个术语,并通过谷歌搜索来查找一些参考资料......但是无法理解何时使用它....
我什么时候应该考虑使用连接池?
连接池的优点和缺点是什么?
任何建议....
如何获取sql server 2005中数据库连接的详细列表?
database sql-server database-connection connection-pooling sql-server-2005
我不明白常规连接和连接池之间的语法区别是什么.
当我使用using密钥时,例如:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
这是执行连接池的方法吗?
我正在开发一个项目,我需要对我正在运行的服务器进行HTTP URL调用,该服务器Restful Service将响应作为JSON字符串返回.
下面是我使用的主要代码future和callables-
public class TimeoutThreadExample {
private ExecutorService executor = Executors.newFixedThreadPool(10);
public String getData() {
Future<String> future = executor.submit(new Task());
String response = null;
try {
response = future.get(100, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的Task类实现Callable接口并使用RestTemplate...
class Task implements Callable<String> {
private RestTemplate restTemplate = new RestTemplate();
public …Run Code Online (Sandbox Code Playgroud) 多年来,我在连接到SQL服务器的所有Web应用程序上遇到了非常奇怪的问题.
问题是如果数据库服务器发生了某些事情(服务器重启或其他问题),de web app就会从那时起停止工作,即使数据库服务器处于活动状态且之后也是如此.
会发生的是每个ADO.NET操作(ExecuteNonQuery,CreateReader,BeginTransaction,...)都会因InvalidOperationException失败:" 操作无效.连接已关闭 ".似乎对SqlConnection.Open()的调用从应用程序池中检索了一个连接...已关闭!
根据文档,连接池应该自动从连接池中删除断开的连接,但是显然闭合连接不被视为"切断",因此对SqlConnection.Open()的调用愉快地返回一个已关闭的连接,假设它是打开,不检查这个.
我目前的解决方法是在打开连接后立即检查连接状态:
using (SqlConnection connection = new SqlConnection( connectionString ))
{
connection.Open();
if (connection.State != ConnectionState.Open)
{
SqlConnection.ClearAllPools();
connection.Open();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
这种解决方法似乎现在有效,但我觉得这样做并不舒服.
所以我的问题是:
连接字符串中连接池ADO.Net支持的最大和最小大小是多少.
最小池大小= [最大大小?]
最大池大小= [最小大小]
如果没有在eclipse链接的persistence.xml中定义连接池,那么默认行为是什么?
它会为每个事务打开和关闭JDBC连接吗?它会创建一个默认的连接池吗?
昨天我偶然遇到了HikariCP,整整一夜都在研究它.我对用于微调其实现和设计的细节和努力给我留下了深刻的印象.直截了当地说,我无法确定它是如何实际处理通过其autoCommit设置检查回池中的连接false,而由于例外,它们既没有commit()也没有rollback()在它们上发布.这可能是下一个期望新连接的请求者的许多严重事务问题的根源,但遗憾的是它以其悬空事务状态接收此连接.
虽然C3P0和Tomcat的JDBC池有一些所谓的旋钮用于此目的(通过配置或拦截),但我在HikariCP的文档或支持组中找不到任何内容.如果我错了,请纠正我,但写一个简单的单元测试告诉我,游泳池对此没有任何意义.
我需要知道这个观察是否真的是正确的,我不会错过任何关于它的事情.此外,如果有任何计划在HikariCP中解决这个问题,因为它对我来说至关重要.
谢谢.
这是我如何使用它 -
private static final PoolingHttpClientConnectionManager connPool;
static {
connPool = new PoolingHttpClientConnectionManager();
// Increase max total connection to 200
connPool.setMaxTotal(200);//configurable through app.properties
// Increase default max connection per route to 50
connPool.setDefaultMaxPerRoute(20);//configurable through app.properties
}
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connPool) .build();
Run Code Online (Sandbox Code Playgroud)
另外我在http GET周围放了一个finally块 -
finally {
try {
httpClient.close();
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的堆栈跟踪 -
java.lang.IllegalStateException: Connection pool shut down
at org.apache.http.util.Asserts.check(Asserts.java:34)
at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:169)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:217)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:157)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at …Run Code Online (Sandbox Code Playgroud) ado.net ×3
java ×3
.net ×2
asp.net ×2
jdbc ×2
sql-server ×2
c# ×1
connection ×1
database ×1
eclipselink ×1
hikaricp ×1
jpa ×1
mysql ×1
php ×1
pool ×1
resttemplate ×1
static ×1
transactions ×1