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在数据量比较大 的时候,应该会执行的非常缓慢,一直占用着数据库资源,然后模块也就挂了

  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/zhixw/p/7967346.html
Copyright © 2011-2022 走看看