Postgres vs MySQL:命令不同步;

Postgres vs MySQL: Commands out of sync;

MySQL场景:

当我使用多线程在 MySQL 中执行 "SELECT" 查询时,我收到以下消息:"Commands out of sync; you can't run this command now",我发现这是由于必须等待 "consume"的结果再做一次查询。 C++范例:

void DataProcAsyncWorker::Execute()
{
  std::thread (&DataProcAsyncWorker::Run, this).join();
}
void DataProcAsyncWorker :: Run () {
  sql::PreparedStatement * prep_stmt = c->con->prepareStatement(query);
  ...
}

重要:
我忍不住在每个查询中使用多个线程(SELECT、INSERT、ETC),因为我正在构建的模块正在与 NodeJS "locks" 线程集成,直到已经获得结果,为此原因我需要在后台(新线程)运行 并解析包含从 MySQL

获得的结果的 "promise"

重要:
我正在保存几个 "connections" [示例:10],并且每个 SQL 调用函数都会选择一个连接。这是:1.一个包含10个已建立连接的连接池,Ex:

for (int i = 0; i <10; i ++) {
    Com * c = new Com;
    c->id = i;
    c->con = openConnection ();
    c->con->setSchema("gateway");
    conns.push_back(c);
}


每秒执行> = 100 SELECT个查询时出现问题,我相信即使连接平衡每秒100个连接也是一个很高的数字并且连接"ex: conns.at(10)" 正在处理中,未被消耗
我的问题:
PostgreSQL 也有这个限制吗?或者在PostgreSQL中也有这样的限制?

注:
在PHP关于MySQL的文档中,使用mysqli_query后需要mysqli_free_result命令,如果没有,我会得到一个"Commands out of sync"错误,与Postgre相反SQL 文档,pg_free_result 命令在使用 pg_query 后是完全可选的。

也就是说,使用 PostgreSQL 的人已经遇到了与 "commands are out of sync" 相关的问题,也许这个错误有另一个名称? 或者 PostgreSQL 是否能够自动处理这个问题,因为 free_result 被服务器不可见地调用而没有导致我这个错误?

您需要在开始另一条准备语句(或游标或类似构造)之前完成使用。

"Commands out of sync" 通常通过添加结束语句来治愈。

”问题: PostgreSQL 也有这个限制吗?或者在PostgreSQL中也有这样的限制?

没有,PostgreSQL没有这个限制