zoukankan      html  css  js  c++  java
  • 如何用一个SQL“搞挂”一个服务模块

    为了批量获取商品规格信息,寡人写下了如下代码和SQL~

    /**
          * 批量获取商品规格信息
          * @Description:
          * @author:Zhixw
          * @date:2017年11月27日下午5:33:32
          * @version:1.0
          * @param item_code
          * @return
          */
         List<Map<String,String>> getAllItemDTinfo(@Param("list") List<Map<String,String>> list);
    <select id="getAllItemDTinfo" resultType="java.util.Map">
            select ITEM_CODE,UNIT_CODE,DT_INFO from tunit
            <where>
                <foreach collection="list" item="item" open="(" separator=") or (" close=")">
                    item_code = #{item.item_code} and unit_code = #{item.unit_code}
                </foreach>
            </where> 
    </select>

    然后~  本地自测也没有问题,信心满满的就上去了。。。。。回头想起来,幸好是测试环境。否则不炸了才怪

    话说回来,为什么要写这样的SQL呢?原因就是为了优化,之前在for循环中查找商品规格,然后数据量大的时候不行了 ,一个普通的小SQL被执行了几百次。用上面的方式改成批量获取的方式,数据量小的时候也没有问题,当然数据量大的时候,这个批量获取的SQL更加可怕,可以搞挂一个模块的微服务

    好端端的微服务

    寡人所操作的interaction模块,由绿油油的“UP”状态变成了~大红色的“DOWN”。(抱歉当时忘记截图保存  先那这个凑吧)

    然后我们再看看日志:

     看日志,好像是连接池获取不到了,然后我们刚开始以为是其他的问题,尝试去解决,发现怎么都不能彻底解决,因为每次这个模块重启或者发布之后,这种现象就消失了,然后运行一段时间之后,老毛病又犯了,

    然后感觉应该不是连接池的问题,运行了好几个月一直没有动过,怎么会好端端的突然之间就坏了呢,再仔细看了下日志,其实细心的人会发现日志中已经指出了大概发生问题的地方。所以我果断把调用那SQL的地方注释掉之后,再重新发布之后,一切恢复正常,没有再出毛病了

    这个SQL在数据量比较大 的时候,应该会执行的非常缓慢,一直占用着数据库资源,然后模块也就挂了

  • 相关阅读:
    栈溢出笔记1.3 准备Shellcode
    聊聊手游的那些惊喜与惊吓
    GIS+=地理信息+容器技术(4)——Docker执行
    与AQS有关的并发类
    HDU 2102 A计划
    生产系统ELK日志采集系统
    datagrip离线安装驱动jar
    oracle无效索引重建
    18年总结及19年展望
    shell符号解释
  • 原文地址:https://www.cnblogs.com/zhixw/p/7967346.html
Copyright © 2011-2022 走看看