golang sql 包的 next 方法是每次到数据库端取一条数据?

2020-05-13 18:21:14 +08:00
 ahmcsxcc

是这样吗?

如果是这样这样网络开销是不是有点大?

1009 次点击
所在节点    Go 编程语言
2 条回复
tms
2020-05-14 02:05:24 +08:00
准确说是 next 一次从 buffer 里取一条数据到 lastcols,至于你说的数据库和客户端的网络开销和交互取决于 buffer,是 driver 的事情,由 client 和 server 端配合来进行管理。
sql 的 next 定义参考 https://golang.org/src/database/sql/sql.go?s=77737:77764#L2732
对于 mysql 如 go-sql-driver 这个 driver 在 packets.go 里有 readRow 调用 readPacket 来管理 buffer.go 定义的 buffer 。
对应 mysql server 端的 https://dev.mysql.com/doc/internals/en/com-query-response.html
其他数据库 server 和 driver,也可以对应研究一下。
ahmcsxcc
2020-05-14 09:36:36 +08:00
@tms #1
感谢,我先去研究研究

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671340

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX