zoukankan      html  css  js  c++  java
  • mysql 导出数据导致锁表

    故事原由:今天同事小星做系统优化时问我一个sql问题,为什么查询慢,我看了一眼,发现用到了表A中的datetime类型列进行时间比较,建议他给datetime类型列加上索引。

    可这是生产库,表A里面有几百万数据,我说那就等到中午访问量小点的时候导入测试库先做个测试

    中午的12:36 我用mysql workbanch ->Management->Data Export 准备把数据导出本地,然后在导入测试库。

    可是等了两三分钟,还没倒完,突然发现大量报警邮件,内容:The operation has timed out

    突然明白了什么,哎呦我去,赶紧停止了导出数据。

    事由及原因:

    The operation has timed out 报警信息是爬虫抛出的异常,因为报表统计站点响应超时了,查看IIS日志和爬虫日志,果真如此。

    距上次 站点优化 之后再也没有The operation has timed out ,为什么12:36 到12:30 这四分钟出现了200多个请求异常,跟踪日志:

    异常信息:在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常

    又看了看同事写的代码

    //添加流水
    public int AddFlowMsg(flowmsg ifm, flowmsgcur fc)
    {
    db.flowmsg.Add(ifm);
    db.flowmsgcur.Add(fc);

    return db.SaveChanges();
    }

    根据爬虫日志、IIS日志、本地导出的sql文件时间判断。

    12:26---12:30

    mysql workbanck导出表数据(flowmsgcur)时导致flowmsgcur表被锁,导致了:在提供程序连接上启动事务时出错。

    可以看看:

    Run MySQLDump without Locking Tables

  • 相关阅读:
    Intent flag 与启动模式的对应关系
    Activity的启动模式---总结
    NDK---使用,开发步骤
    自定义ViewGroup
    android:process结合activity启动模式的一次实践
    Java单元测试之覆盖率统计eclemma
    Java单元测试之JUnit篇
    结对编程1
    个人作业1——四则运算题目生成程序(基于控制台)
    Coding使用方法
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/6374655.html
Copyright © 2011-2022 走看看