我想以非阻塞的方式访问数据库,换句话说,我将通过套接字发送SQL请求并通过同一个套接字读取查询响应 异步。这意味着我只能在套接字可用时读取数据(Java NIO SocketChannel
)所以我永远不会阻止。
我可能错了,但据我所知,数据库的JDBC驱动程序都使用阻塞套接字。
即使我必须执行返回100万行的查询,我也可以异步执行,接收行在套接字缓冲区中可用的行。
我的目标是执行SQL查询而不会阻塞(即不会产生延迟)。 使用单独的线程不是一种选择。我需要在网络线程(NIO选择器线程)内执行此操作。
有没有人成功这样做或者可以推荐一种不涉及额外线程的方法?