如何检查mysql的会话/连接状态.Xx c++ api



在我的c++代码中,我使用MySQL驱动程序8.0。由于为每个客户机请求建立到数据库的连接的方法成本很高,所以我使用了一个数据库连接池。

mysqlx文档2.2.3使用连接池连接到单个MySQL服务器

I从客户端创建一个共享指针,在应用程序生命周期中需要时使用。

创建客户端:

mClient_ = std::make_shared<mysqlx::Client>(connectionString.str().c_str(), ClientOption::POOL_QUEUE_TIMEOUT, pPoolTimeout,
ClientOption::POOL_MAX_SIZE, pPoolSize);

get Session and using:


mysqlx::Session session = mClient_->getSession();
mysqlx::RowResult res = session.sql(query.str().c_str()).execute();

它工作得很好,但是如果应用程序进入IDLE,池会话可能会下降,并且应用程序被卡住,或者在某些情况下它接收SIGSEGV,我找不到任何方法来检查连接状态,例如在执行之前或在获得会话之后?

我需要一些功能,如session.isConnected()或一些例程来检查会话之前使用它。

有解决方案吗?

感谢

您是获得会话并立即执行还是获得一次会话并在需要时使用它?

因为正确的模式是获取会话,使用它并销毁它,这样它就会返回到池中。这样,当你得到一个会话时,就可以保证它是一个工作会话。

最新更新