NIO缓冲模式 - reactivegroup/rxdb-example GitHub Wiki
r2dbc-mysql
驱动使用了NIO,鉴于NIO的水位触发/边缘触发模式,数据无需在内存中缓存到全部接收完成(JDBC需要缓存所有数据到内存中直到接收完成)
严格来说,驱动程序不会阻塞任何线程。
可能有两个EOF:元数据EOF和行数据EOF。
在大/慢查询中,驱动程序将在准备好元数据(接收到的元数据EOF)并接收第一行数据时立即发出第一行。
当然,如果元数据后没有行数据,它将仅发出一个完整的信号。
在示例中添加更多其他信息:
* 大查询将返回10行。
* 发送该语句后,服务器将在0.8秒后推送元数据。
* 服务器将在推送元数据后0.2秒推送第一行数据。驱动程序将立即将该行数据和元数据发送到`map`功能。
* 服务器将在推送前一行数据后1秒钟推送每个后续行数据。随后的每个行数据接收一个,驱动程序立即发出一个。
然后,答案是“是的,R2DBC MySQL从1秒到10秒持续消耗接收到的Mysql数据,而不是缓冲到内存中直到完成”。
Issue: Whether R2DBC will wait for the EOF pushed by the MYSQL server?