gpt4 book ai didi

node.js - 使用 Sequelize 获取 360 万条记录会使 Node 崩溃,MariaDB 连接器可以工作。知道为什么吗?

转载 作者:行者123 更新时间:2023-12-03 22:23:21 26 4
gpt4 key购买 nike

正如标题已经说过的,我正在尝试运行一个原始的 SELECT 查询,结果是 3.6 条记录。
当我使用 MariaDB 连接器 ( https://github.com/mariadb-corporation/mariadb-connector-nodejs ) 时,它工作得很好并且在大约 2 分钟内完成。
但是 Sequelize 需要更长的时间,最终,Node 在 20 到 30 分钟后崩溃。

你们知道如何解决这个问题吗?

非常感谢你,祝你有美好的一天!

小心,

帕特里克

最佳答案

当您执行请求时,sequelize 将在底层数据库上执行 SELECT

然后两件事会连续发生:

  • MariaDB 将加载符合您条件的所有数据
  • MariaDB 会将所有数据发送到 sequelize,这将:
  • 重载你的应用内存(所有数据都将存储到 node.js 内存中)
  • 崩溃 Sequelize ,因为它不能处理那么多数据

  • 当您对庞大的数据集执行请求时,请使用 游标 。使用游标,MariaDB 将加载所有数据,然后,sequelize 将按组获取数据(例如,sequelize 加载 100 个数据,您处理它,然后它再次加载 100 个数据,这意味着在顶部您将加载 100 个数据在您的 node.js 内存上)。

    https://github.com/Kaltsoon/sequelize-cursor-pagination

    https://mariadb.com/kb/en/cursor-overview/

    关于node.js - 使用 Sequelize 获取 360 万条记录会使 Node 崩溃,MariaDB 连接器可以工作。知道为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59790955/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com