当前位置: 首页 > news >正文

流量一大用SQL是不能用JOIN的

我们当时的场景是,一张销售商品表(SPU维度),一张商品SKU表,和一张活动表,我当时做了三表关联,全部都用到索引的,期初跑的很好,SQL都执行的很快,直到某一天,流量陡增后,连接池里的数据库连接突然突然不够用了,导致所有其他的接口的响应速度都变很慢。

整个系统不可用了。

每个业务请求,只要涉及到读取数据库的,响应时间都是超长的,因为一直拿不到数据库连接。

后来,我的解决方案是,用单表查询,活动表/商品表/SKU表,各读一次,就再也没有发生过数据库连接不够用了。为什么?

为啥多读几次表反而更加快了? join语句只执行一次反而慢了?

关键原因在于:当有请求到来的时候,执行的线程拿到数据库连接干活的时候,需要用最快的速度,把数据库连接放回到连接池里去,其他线程才能拿到。

而join它要去读取三棵B+树,无论你sql执行效率多高,都没用的,因为耗时一定比读取一棵B+树慢的。举例:

线程A执行JOIN,0.2秒

线程B执行JOIN,0.2秒

线程C执行JOIN,0.2秒

并发一来,每个线程都要单独占用一个数据库连接0.2秒了,好了,流量一大,占用大量连接,而之前的连接又没有释放,那故障就马上发生了。

而单表的:

线程A单表0.01秒

线程B单表0.01秒

线程C单表0.01秒

也是并发,但是线程占用数据库连接的时间短,马上释放,其他线程等一会就能拿到数据库连接了。

因此,后续有面试官问你关于SQL JOIN的问题,你可以这么回答:

看并发,如果流量不大数据量不大,用join没问题,哪怕join 10张表都没问题的。但是流量一大,由于要跨多棵B+树读取数据,占用数据库连接会变长,连接池一下子就没有了,系统响应就开始变慢。

http://www.jsqmd.com/news/1394091/

相关文章:

  • MemPalace:为LLM构建长期记忆系统的工程实践指南
  • 信号与系统考研强化:从郑君里教材到真题解题能力的转化策略
  • 2026年北京延庆区GEO服务商代理加盟靠谱推荐:城市合伙人模式解析 - 小随科技
  • 2026年中山极氪9X 全车六项升级施工纪实|阻尼杆/窗膜/底盘防护/内饰改装案例 - 米諾
  • 多模态 AI 科普:AI 看懂图片、听懂语音背后发生了什么
  • 2026想要在松阳县找正规的防水补漏服务商该如何挑选? - 品牌品鉴馆
  • 构建可插拔智能体知识体系:从技能孤岛到协同进化的架构设计
  • Spring Boot + Kafka + Redis + Spring AI:互联网大厂 Java 面试实录(企业协同 SaaS 场景)
  • 影石 Insta360 新款 X6 发布:更小机身、更强性能,售价 699.99 美元起!
  • JX3Toy零基础上手全攻略:剑网3自动化脚本如何帮你腾出双手
  • psd模板_001_红色凤舞
  • 2026年一体化污水处理设备厂家推荐:靠谱厂家、龙头品牌和项目案例参考 - 生活动态圈
  • 零基础如何选AI生成原型工具?一份表看懂国产与海外差异
  • Claude开发中“Subagent不是函数”错误排查与多智能体系统构建指南
  • 9月Pixel Buds Pro 2固件更新:新增橄榄色,还能根据佩戴情况优化主动降噪!
  • AI服务器机箱焊缝打磨费工?平整度控制三招
  • 天道17集
  • 2026年|上海市奉贤区GEO服务商代理加盟靠谱推荐:城市合伙人模式选型与避坑指南 - 企业新闻快传
  • AI数字化蛋白筛选到底是否靠谱?AI-PPI/多模态/虚拟筛选一篇汇总!
  • DeepSeek V4 Pro发布,技术文档的“智能写作”终于不再是“智能拼凑”
  • Windows系统文件ulib.dll丢失找不到问题解决
  • 龙岗区龙城城建办消防备案,交一张水图根本不够——他们看的其实是消防设计专篇
  • LLM时代程序员新“懒惰”美德:从编码者到AI策展人与系统架构师
  • CLI复兴:大厂为何集体拥抱命令行工具?
  • 26MHz热敏晶振换料实战:手机无线子板从泰晶切换到鸿星的选型与验证记录
  • 网易版《我的世界》皮肤上传全攻略:从PNG到上架资源中心的工程化实践
  • 终极指南:5步掌握猫抓浏览器扩展,3倍提升在线媒体捕获效率
  • 图生3D模型后如何继续进行角色绑定?根据生成结果安排下一步 - 生活动态圈
  • 南京老小区改造背景下,住宅屋面外墙地下室渗漏该如何同步规划修缮 - 本地便民网
  • 华师计算机考研838专业课:数据结构与C语言核心考点与高效备考策略