使用 Prisma 执行 MySQL 查询花费的时间太长

标签 mysql node.js prisma-graphql

我已经构建了一个node-GraphQl服务器(使用GraphQl-yoga),MySQL数据库在docker容器内运行,并且我使用Prisma与其交互(即执行所有类型的数据库操作)。我的数据库随着时间的推移增长得越来越快(一个月消耗了 7 GB)。我有 10 个表,其中一个有 600 000 行,并且呈指数级增长(每天几乎有 20 000 行添加到该表中)。当应用程序启动时,它必须从该表中获取数据。现在的问题是我必须每天停止然后重新启动 mysql 服务才能使我的应用程序正常工作,否则要么花费太多时间来加载数据(从具有 6 个 lac 行的表),要么完全停止工作(并且我必须再次重新启动 MySQL 服务,然后它开始正常工作,至少一天)。我不知道这是否是 mysql 数据库的问题,特别是具有 600 000 行且快速增长的表的问题(我是 mysql 的新手),还是使用执行所有查询的 prisma 的问题?有什么可能的方法来摆脱这个问题(停止并重新启动 mysql 服务)?

//prisma 文件夹内的 datamodel.prisma 文件中的表结构

type Topics {
  id: ID! @unique
  createdAt: DateTime! @createdAt
  locationId: Int
  obj: Json
}

最佳答案

我不确定 Prisma API 如何从该表读取数据。

我的简单建议是首先您必须使用createdAt列读取最后日期的firstlast ID,并使用同一列对其进行分组并获取MinMax ID。在第一次读取操作中,仅选择 ID

然后选择这两个ID之间的记录。所以你不需要每次都读取所有记录。

关于使用 Prisma 执行 MySQL 查询花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57621579/

相关文章:

javascript - 如何在nodejs中的另一个箭头函数中调用箭头函数

javascript - Istanbul 尔代码覆盖率检查我的规范文件而不是源代码的覆盖率?

graphcool - Playground 之外的解析器/查询中的 Prisma orderBy

php - 我的语法出现MySQL错误

mysql - 打开有密码 : Run-time error '-2147221241 (80040107) Automation error Unspecified error 的连接

javascript - 在共享主机上运行 socket.io

javascript - 棱镜2 : how to fetch nested fields?

javascript - 有没有办法从 datamodel.prisma 文件生成 schema.graphql 文件?

mysql - 无法登录 phpmyadmin

php - Json转Mysql数据库