C#中的OrientDB连接池

时间:2017-04-25 14:42:30

标签: c# orientdb

我正在使用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构造函数时,池是否自发地创建了自己?如果是这样,我如何控制池大小等参数?

1 个答案:

答案 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;