美文网首页
一次mysql问题查询

一次mysql问题查询

作者: 吴世浩 | 来源:发表于2017-05-20 00:28 被阅读1354次

    一、好言

    目前这个年龄真的很尴尬 不够成熟也不够幼稚 没有能力却有野心


    二、背景

    昨天上线,但是在准生产上,出现了问题,这个问题在测试环境出现过,但是我把数据库四千多万的数据清理了,然后就成功了,但是现在在预发布环境又出现了这个问题,不得不去找到确定的原因,每次执行sql都是被中断。所以这个问题也让我记住,测试环境的大量数据也是对性能很好的测试。有问题就要定位。因为当时查询到的是查询超时造成的,因此就是因为数据量多,所以我就删除了测试数据,但是生产能删除吗?NO!!!下面看问题和解决。


    三:问题

    ERROR [8080-test] 2017-05-17 17:59:55.580 [taskExecutor-
    9]org.springframework.aop.interceptor.SimpleAsyncUncaughtExceptio
    nHandler - Unexpected error occurred 
    invoking async method 'public void 
    com.mouse.moon.service.TestRegisterService.test(com.mouse.moon.
    model.po.Person)'.
    org.springframework.jdbc.UncategorizedSQLException: 
    ### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException: 
    Query execution was interrupted
    ### The error may exist in URL [jar:file:/mouse/tools//8080-
    test/lib/mouse-SNAPSHOT-1705171633.jar!/mapper/person.xml]
    ### The error may involve com.mouse.moon.mapper.PersonDAO.selectPersonIfo-Inline
    ### The error occurred while setting parameters
    ### SQL: select id, column1, column2, column3, column4, column5,
     create_time,update_time from 
    table_name t1 WHERE t1.column2=? and t2.column3=? and t3.column4=? 
    ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException: 
    Query execution was 
    
    interrupted
    ; uncategorized SQLException for SQL []; SQL state [70100]; error 
    code [1317]; Query execution 
    wasinterrupted; nested exception is 
     com.mysql.jdbc.exceptions.jdbc4.MySQLQueryInterruptedException:
    Query
    execution was interrupted
    

    搜了下错误码,给出如下结果

    错误:1317 SQLSTATE: 70100 (ER_QUERY_INTERRUPTED)
    
    消息:查询执行被中断。
    

    在代码执行时候,捕捉进程结果

    select * from information_schema.processlist where info is not null 
    limit 0,100;
    
    sql_process-one.png sql_process-two.png

    在进行查询的时候我们可以看到这个select执行的时间太久,数据库连接的时候Mybatis会有个超时时间。所以每次都是执行中断。

    并且在测试的时候用原来的数据就可以成功,新增的两条数据不行,这是因为我取出条件表的所有数据,如果用原来数据测试,第一次循环就匹配上了,就不用下面的条件继续查询。所以造成新的数据,第一次条件查询没查询到,那么就使用第二个组合条件查询,由于数据量大,而且组合条件没有建立索引,引起这个问题,花了半个小时找问题,最好还要dba帮忙看是不是由于数据库mysql设置的时间问题,当时我说能否看慢查询,对于这种查询中断的是没有记录在慢查询的日志中,只有完整的执行后才会记录在慢查询的日志中。

    相关文章

      网友评论

          本文标题:一次mysql问题查询

          本文链接:https://www.haomeiwen.com/subject/datyxxtx.html