全栈光头强 2023-08-06 12:35 采纳率: 0%
浏览 33
已结题

mongoose高并发,数据库操作过慢

项目技术 node+express+mongoose 已经不是上线了, 在每天早上单量是比较多的属于高峰期,但是由于早上订单较多并数据库操作过多,导致数据库差改很慢。
我给日志打印了执行时间, 正常不是高峰期时候 执行速度很快10-200毫秒左右,但在高峰期的时候执行速度长达50-70秒。 可以通过那个方式解决并发数据库处理过慢问题?

目前已给mongoose设置了连接池是150, 连接池是只用在连接数据库时配置吗? 需要断开连接吗?

  • 写回答

16条回答 默认 最新

  • 大同大 2023-08-06 13:35
    关注
    获得0.30元问题酬金

    在高峰期时,如果数据库处理过慢,可以考虑以下几种方式来解决并发数据库处理问题:

    1. 数据库索引优化:确保数据库表中的字段上有适当的索引。索引可以加快查询速度,减少数据库的负载。分析查询语句和数据访问模式,确定哪些字段需要添加索引,并确保索引的正确使用。

    2. 数据库连接池:使用连接池管理数据库连接,而不是每次请求都创建和销毁连接。连接池可以重用连接,减少连接的创建和销毁开销,提高数据库访问的效率。

    3. 异步处理:将数据库操作改为异步执行,使用回调函数或者Promise等方式处理异步操作。这样可以避免阻塞主线程,提高并发处理能力。

    4. 数据库分片:如果数据库负载过大,可以考虑将数据库分片,将数据分散存储在多个数据库中,从而提高数据库的并发处理能力。

    5. 缓存:对于一些频繁访问的数据,可以使用缓存来减少对数据库的访问。将数据缓存在内存中,可以大大提高读取速度。

    6. 垂直拆分和水平拆分:如果数据库表结构过于复杂或者数据量过大,可以考虑对数据库进行垂直拆分或水平拆分。垂直拆分是将表按照功能或者业务进行拆分,水平拆分是将表按照数据行进行拆分。拆分后的数据库可以分别进行并发处理,提高系统的性能。

    以上是一些常见的解决并发数据库处理过慢问题的方式,具体的选择需要根据实际情况进行评估和调整。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 修改了问题 8月6日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 用matlab或python实现多个表格合并单元格
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题