zoukankan      html  css  js  c++  java
  • 记两次线上出现的索引失效的问题

    1、并发环境两个进程做update操作导致死锁

    2、触发器中,由于字段类型转换引发的索引失效问题

    以上两个问题的间接原因都是索引失效,进而引发全局扫描,使检索时间大大增加

    1、并发环境两个进程做update操作导致死锁

    场景:项目中有一张记录表单传签的记录表,包含表单单号、传签时间、审核人申请人等字段信息。目前表数据量已经达到160W笔。原先是有一个主键的聚集索引【包含表单单号、申请人、申请时间】。在某个时间这张表出现了死锁的情况。经过分析,得到死锁现场的重演:由于在同一时间,两位审核人进入系统同时点击审核。由于不同的日期,共用同一个单号,所以审核人单词的审核操作会修改多条记录。尝试用explain关键字分析update的检索条件。发现type字段是all,也就是出现了索引失效了。

    解决方案:

    【1】:移除垃圾历史资料                                                                                      

    【2】:给单号字段添加非聚集索引。因为主键的聚集索引失效了,所以为了使单号索引生效,添加了非聚集索引。

    2、触发器中,由于字段类型转换引发的索引失效问题

    场景:由于使用了临时表,但是由于临时表与原始资料表该字段一个是char(10),一个是varchar(10),由于出现了类型转换,所以引发了索引失效。

    解决方案:

    【1】:直接将临时表的数据类型改为与资源表一致的就可以

  • 相关阅读:
    回文字符串系列问题
    找两个数组的重合数字系列
    IPC最快的方式----共享内存(shared memory)
    【经典算法】——KMP,深入讲解next数组的求解
    关于SqlDateTime溢出的问题
    git操作之常见问题解决方案
    Javascript中length属性的总结
    从零开始学node(一): nodejs开发环境的配置
    使用Number.parseFloat引发的悲剧
    超链接的那些事(三): 属性target
  • 原文地址:https://www.cnblogs.com/yibao/p/14517857.html
Copyright © 2011-2022 走看看