Tag: 连接池

我应该在数据库连接string中设置最大池大小吗? 如果我不这样怎么办?

这是我的数据库连接string。 到目前为止,我没有设置最大池大小。 public static string srConnectionString = "server=localhost;database=mydb;uid=sa;pwd=mypw;"; 那么目前我的应用程序支持多less个连接呢? 什么是增加连接池大小正确的语法? 该应用程序是用C#4.0编写的。

什么是数据库池?

我只想知道数据库连接池的概念以及如何实现。

.NET最佳实践的MongoDB连接?

我一直在使用GitHub上的C#驱动程序来玩MongoDB(它的速度惊人)。 在我testing的小型单线程控制台应用程序中,一切正常。 我能够在8秒内添加100万个文件(是的,百万)运行单线程。 如果我使用for循环范围之外的连接,我只会得到这个性能。 换句话说,我保持每个插入连接而不是连接每个插入。 显然这是人为的。 我以为我会对它进行一番调查,看看它是如何与多个线程一起工作的。 我这样做是因为我需要模拟一个有多个并发请求的网站。 我正在旋转15到50个线程,在所有情况下总共插入了15万个文件。 如果我只是让线程运行,每个插入操作创build一个新的连接,性能就会停下来。 显然,我需要find一种方法来共享,locking或合并连接。 这就是问题所在。 连接到MongoDB的最佳做法是什么? 连接应该在应用程序的整个生命周期内保持打开状态(每个操作的TCP连接都有大量的延迟打开和closures)? 有没有人有任何真实的世界或MongoDB生产经验,特别是底层的连接? 这是我的线程示例使用一个静态连接,被locking插入操作。 请提供build议,以最大限度地提高networking环境中的性能和可靠性! private static Mongo _mongo; private static void RunMongoThreaded() { _mongo = new Mongo(); _mongo.Connect(); var threadFinishEvents = new List<EventWaitHandle>(); for(var i = 0; i < 50; i++) { var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); threadFinishEvents.Add(threadFinish); var thread = […]

PHP中的连接池

是否有可能像在J2EE容器中一样使用PHP时caching数据库连接? 如果是这样,怎么样?

在池中closuresJDBC连接

我们使用JDBC的标准代码部分是… Connection conn = getConnection(…); Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rset = stmt.executeQuery (sqlQuery); // do stuff with rset rset.close(); stmt.close(); conn.close(); 问题1:使用连接池时,是否应该closures连接? 如果是这样,是不是汇集失地的目的? 如果不是,那么DataSource如何知道Connection的特定实例什么时候被释放并且可以被重用呢? 我对这个有点困惑,任何赞赏的指针。 问题2:以下方法是否接近标准? 看起来像试图从池中获得连接,如果无法build立数据源,则使用旧式的DriverManager。 我们甚至不知道哪个部分在运行时被执行。 重复上面的问题,是否应该closures从这种方法出来的连接? 谢谢, – MS。 synchronized public Connection getConnection (boolean pooledConnection) throws SQLException { if (pooledConnection) { if (ds == null) { try { Context […]

configurationHibernate通过JNDI数据源连接到数据库

大家好我使用Hibernate + Struts2 + Tomcat6 + Mysql作为我的J2EE框架。 我一直在使用hibernate的内置连接池机制,但事实certificate,在8小时之后,mysqlclosures它的连接时,会出现问题。 无论如何,我search了一下,发现我应该通过JNDI数据源获得我的连接,但我无法达成一个好的和完整的教程。 我应该采取什么措施来做到这一点? 请给我足够的细节,我有点新。 这里是我的hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url"> jdbc:mysql://localhost/hposg?characterEncoding=UTF-8 </property> <property name="connection.username">root</property> <property name="connection.password"></property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <property name="hbm2ddl.auto">update</property> <property name="hibernate.max_fetch_depth">3</property> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.idle_test_period">300</property> <property name="hibernate.c3p0.timeout">1800</property> […]

高效的SQLtesting查询或validation查询,将跨越所有(或大多数)数据库

许多数据库连接池库提供了testing其闲置SQL连接的能力。 例如,JDBC池库c3p0有一个名为preferredTestQuery的属性,它以configuration的间隔在连接上执行。 同样,Apache Commons DBCP也有validationQuery 。 我见过的很多示例 查询都是针对MySQL的,推荐使用SELECT 1; 作为testing查询的值。 但是,这个查询不适用于某些数据库(例如,HSQLDB, SELECT 1需要一个FROM子句)。 是否有一个数据库不可知的查询是等效的,但将适用于所有SQL数据库? 编辑: 如果没有(似乎是这种情况),有人可以build议一套SQL查询,将适用于各种数据库提供商? 我的意图是以编程方式确定我可以使用的基于我的数据库提供程序configuration的声明。

连接closures时,未提交的事务会发生什么?

他们是立即回滚? 他们在一段时间后回滚了吗? 他们是否处于未提交状态? 如果使用连接池并且连接重置简单,行为是否相同?

sp_reset_connection是做什么的?

sp_reset_connection似乎是由SQL Server连接池调用的,以确保从池中重用的连接将其大部分设置重置。 有谁知道它究竟做了什么,但不做? 例如我从这篇文章看到,它不重置事务隔离级别

我使用JDBC连接池吗?

我想确定我是否实际使用JDBC连接池。 经过一番研究,实现起来似乎太简单了。 实际上比常规连接更容易,所以我想validation一下。 这是我的连接类: public class DatabaseConnection { Connection conn = null; public Connection getConnection() { BasicDataSource bds = new BasicDataSource(); bds.setDriverClassName("com.mysql.jdbc.Driver"); bds.setUrl("jdbc:mysql://localhost:3306/data"); bds.setUsername("USERNAME"); bds.setPassword("PASSWORD"); try{ System.out.println("Attempting Database Connection"); conn = bds.getConnection(); System.out.println("Connected Successfully"); }catch(SQLException e){ System.out.println("Caught SQL Exception: " + e); } return conn; } public void closeConnection() throws SQLException { conn.close(); } } […]