我正在使用OrientDB v2.2.16和C# driver v0.1.12.0。我找不到任何有关如何使用此驱动程序的新迭代创建连接池的文档。 ODatabase构造函数有一个connectionPool参数:
ODatabase db=new ODatabase("localhost", 2424, "testDb", ODatabaseType.Graph, "USER", "PASSWORD", "Pool");
但是没有办法创造" Pool"。旧版本的驱动程序包含OClient类中的CreateDatabasePool函数:
OClient.CreateDatabasePool("localhost", 2424, "testDb", ODatabaseType.Graph, "USER", "PASSWORD", 10, "Pool");
新的没有。在第一次调用ODatabase构造函数时,池是否自发地创建了自己?如果是这样,我如何控制池大小等参数?
答案 0 :(得分:1)
第一次打电话时,游泳池是否会自发创造 ODatabase构造函数?
查看the source,构造函数实际上会自动创建一个连接池:
public ODatabase(string hostName, int port, string databaseName, ODatabaseType type, string userName, string userPassword)
{
_connectionPool = new ConnectionPool(hostName, port, databaseName, type, userName, userPassword);
ClientCache = new ConcurrentDictionary<ORID, ODocument>();
}
如果是这样,我如何控制池大小等参数?
查看the code for the ConnectionPool object,没有明确的方法来明确控制池化连接的数量:
public Connection GetConnection()
{
if (_connectionPool.ContainsKey(_poolAlias))
return _connectionPool[_poolAlias];
var connection = new Connection(_hostName, _port, _databaseName, _type, _userName, _userPassword, _sslCerts);
_connectionPool.AddOrUpdate(_poolAlias, i => connection,
(i, conn) => _connectionPool[i] = conn);
return connection;
}
如您所见,连接在ODatabase对象实例的生命周期内保持不变。因此,控制池大小的唯一方法是控制ODatabase对象的生命周期,以及用于&#34; poolAlias的值。&#34;
请注意,即使您未指定poolAlias,也始终在构造此对象时创建池。在这种情况下,别名设置为&#34;默认。&#34;