准确说是 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,也可以对应研究一下。