我已经构建了一个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
列读取最后日期的first
和last ID
,并使用同一列对其进行分组并获取Min
和Max ID
。在第一次读取操作中,仅选择 ID
。
然后选择这两个ID之间的记录。所以你不需要每次都读取所有记录。
关于使用 Prisma 执行 MySQL 查询花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57621579/