有没有办法写一个不会等到插入完成的INSERT命令?我不希望请求等待,实际插入可能会延迟。
答案 0 :(得分:1)
可以使用PQSendQuery
(和相关函数)而不是PGexec
对连接执行至少一次调用,而无需等待结果。有关详细信息,请参阅http://www.postgresql.org/docs/9.3/static/libpq-async.html。如果你想在不等待第一次完成的情况下发出几个调用,你可能需要某种排队机制。
答案 1 :(得分:0)
这取决于客户端驱动程序。
在协议级别,你不必等待;你可以发送一个Bind,Parse,Execute,Sync,并继续做你想做的事情,然后再去服务器输入消息。
libpq通过异步操作在有限的程度上支持这一点。
大多数驱动程序不会公开此功能。例如,PgJDBC没有办法异步运行插入(批处理模式除外,批处理中的单个插入是异步的,但它仍然等待整个批处理的结果)。
与任何客户端驱动程序一起工作的东西是让一个单独的线程执行插入操作。它可以等待,应用程序的其余部分继续做其他想做的事情。