Node-作为Node.js连接的经典驱动,用起来很方便,但不少开发者发现并发一高就卡顿。其实大多数性能瓶颈并非数据库本身,而是连接池配置、查询写法或索引策略没跟上。只要找准几个关键点,轻松把响应时间从几百毫秒压到几十毫秒。
连接池设置多少合适
连接池太小会导致请求排队等待,太大又会拖垮数据库CPU。通常建议公式是“核数×2+1”,比如4核服务器设9个连接。还要结合业务峰值调整:若单次查询耗时50ms,每秒200请求,至少需要10个连接。记得设置为30000,避免空闲连接占用资源。
如何避免N+1查询
在循环里逐个查询数据是性能杀手。比如先查用户列表,再对每个用户查订单,执行了1+N次SQL。正确做法是用IN或JOIN一次查出所有关联数据。Node-支持批量参数化查询,把ID数组传给ANY($1::int[]),数据库只跑一次就能返回全部结果,网络开销和解析时间都大幅下降。
索引怎么建才有效
很多慢查询是因为索引没用对。先用 看执行计划,重点找Seq Scan。比如WHERE name LIKE '%john%'无法走索引,改成模块的三元组索引。联合索引要遵循最左前缀原则,(, )能加速=1 AND >...,但单独查就用不上该索引。
参数化查询真的更快吗
是的,不仅能防SQL注入,还能让数据库缓存执行计划。Node-的.query(' * FROM users WHERE id=$1', [id])会自动参数化。对比字符串拼接,前者省去了每次解析SQL的步骤,在高并发下QPS能提升30%以上。建议所有动态值都用参数占位符,别再拼字符串了。
你在生产环境遇到过Node-的哪个性能坑?欢迎在评论区分享你的优化经验,觉得有用别忘了点赞转发。

