登录
首页 >  Golang >  Go问答

如何在Golang中设置和获取大小?

来源:stackoverflow

时间:2024-03-01 10:24:21 407浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在Golang中设置和获取大小?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在尝试从数据库加载一个巨大的数据集。

func main() {
        db, err := sql.Open("mysql", "root:pass1@tcp(127.0.0.1:3306)/tuts")

        if err != nil {
            log.Print(err.Error())
        }
        defer db.Close()
        results, err := db.Query("SELECT id, name FROM tags")
        if err != nil {
            panic(err.Error()) 
        }

        for results.Next() {
            var tag Tag
            err = results.Scan(&tag.ID, &tag.Name)
            if err != nil {
                panic(err.Error()) 
            }

            log.Printf(tag.Name)
        }
}

程序是否一次性将所有记录加载到内存中?或者有什么方法可以指定获取大小,以便程序一次仅加载 n 行?假设数据库中有百万行,我想每次获取1000条记录。


解决方案


这对于单行和数百万行都可以正常工作。大多数 SQL 实现在读取时都有批处理的概念。它们根据需要从磁盘加载数据,并根据需要保持 RAM 使用率低/恒定。

例如,如果您选择 1000 行。数据库可以将前 100 行加载到 RAM 中。 当您调用 Next() 时,例如当您到达第 50 行时,数据库会抓取另外一百行(例如第 100 到 201 行)。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何在Golang中设置和获取大小?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>