首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >postgres连接池程序库

postgres连接池程序库
EN

Stack Overflow用户
提问于 2011-06-28 22:25:21
回答 2查看 3.8K关注 0票数 1

有没有C/C++库可用于postgres连接池?我看过pgpool,它更像是一个中间件。我正在寻找一个库,可以编码到我的应用程序中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-29 02:19:58

没有一个很好的应用内连接池库。几乎整个社区都使用外部代理,特别是pgbouncer,因为它具有额外的操作优势。同样,SOCI has a connection pool也是如此,但它的使用范围远不如pgbouncer广泛。

票数 2
EN

Stack Overflow用户

发布于 2012-06-27 23:48:01

你看过libpqxx了吗?它本身并不是一个连接池,但是它提供了一个c++应用程序接口来从应用程序代码中抽象出连接处理。这使得应用程序可以很容易地构建和管理自己的连接池。

这真的很简单,这里有一个例子(使用boost for shared_ptr & pqxx)来演示一个池类,带有工厂方法。可以想象,runQuery方法将从指定的池中获取一个连接,并调用pqxx在底层连接上执行查询。然后,它可以将连接返回到池。

代码语言:javascript
代码运行次数:0
运行
复制
class DbPool {
public:
    static db_handle_t create(const string &conn,
                              uint32_t max = DEFAULT_CON_MAX,
                              uint32_t min = DEFAULT_CON_MIN);

    static pqxx::result runQuery(db_handle_t pool,
                                 const string& query);

private:

    DbPool(const string& con, uint32_t max_cons,
           uint32_t min_cons);

    static boost::ptr_vector<DbPool> pool_;  // Keep a static vector of pools,

    pqxx::connection *createCon();
    void              releaseCon(pqxx::connection *c);
    uint32_t          initializeCons();
    pqxx::connection *getCon();

    boost::ptr_list<pqxx::connection> m_freeCons;

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6508037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档