为啥我从数据库中获取数据缓慢?

Posted

技术标签:

【中文标题】为啥我从数据库中获取数据缓慢?【英文标题】:Why am I getting data from the database slowly?为什么我从数据库中获取数据缓慢? 【发布时间】:2021-10-10 11:01:27 【问题描述】:

我将nestjs与typeorm和postgresql一起使用,我在150-200ms内从数据库中获取数据,但是如果你等待20秒并再次向后端发送请求并获取数据,那么我在1000ms或1500ms内获取数据,虽然在理论上和一般情况下它通常应该是 150-200 毫秒?尝试使用 sequelize 结果是一样的。好像,如果你等待,服务器开始睡着了,当请求再次到达它时,它会醒来很长时间。 这是我如何请求数据库的代码:

async getProducts() 
   const products = await this.productRepository.find();
   return products;

请提供任何想法、答案、选项

【问题讨论】:

【参考方案1】:

Nestjs 不太可能在这里增加明显的延迟。您发布的代码看起来不错。

尝试移除“环境”(如移动部件中的)以了解问题的根源。例如。在main.ts中执行这个方法

提示:如果你的服务被称为MyService,你可以像这样访问它:

const service = app.get(MyService);

另一种方法是删除请求响应中涉及的所有内容:

您的代码来自控制器 -> 服务 -> 存储库 可以拦截的代码:中间件、管道、守卫、拦截器

通过将 Sequelize 切换到 TypeORM,您有点将 DB 通信层作为嫌疑人删除了,如果您的调查没有产生任何帮助,您应该考虑查看底层 DB 和指定的连接选项(如果有的话,例如池大小)。很可能导致代码应该在应用程序中。对于 Sequelize 和 TypeScript,您还可以启用日志记录以获得更好的洞察力。祝您研究顺利!

【讨论】:

以上是关于为啥我从数据库中获取数据缓慢?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我没有从 ArrayList 获取 ListView 数据?

为啥在获取视频数据时收到错误 404?

为啥 DNN 中 DAL2 存储库的默认 GetById() 执行缓慢?

Firestore 获取数据时性能缓慢的问题

大型数据集上的核心数据获取请求缓慢

UICollectionView 与从照片中获取的数据源 - 大量照片的缓慢更新