2023-12-13 MYSQL流式查询和普通查询(基于8.0)

普通查询会返回所有结果证明方法:

debug路径截图.jpg


具体逻辑

可以看到if(!streamResult)的时候,也就是说非流式查询的时候,就会直接while循环获取全部row,然后就会返回一个ResultsetRowsStatic对象,但是流式的话是返回一个ResultsetRowsStreaming的对象。


next()方法具体逻辑

结合上面next(0方法的逻辑图,在每次调用next()的时候其实会调用具体对象的next()方法,下面再看看ResultsetRowsStreaming的next方法

ResultsetRowsStreaming的next()代码逻辑

不难看出,ResultsetRowsStreaming每次调用next的时候才会进行package的获取(从mysql的outputStream流读出),所以能实现以package为最小单位的获取处理

但是要注意,这里的package不是tcp中的package,所以不这里的package是一定含有完整的数据,可能是一条或者多条数据的返回,不是一定是一条数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容