文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库中走索引删除0条记录却要142秒的优化案例

2024-04-02 19:55

关注

这篇文章主要为大家展示了“数据库中走索引删除0条记录却要142秒的优化案例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中走索引删除0条记录却要142秒的优化案例”这篇文章吧。

 BI库上有个定时删除SQL,目的在于删除一个月之前的数据(即表中的数据只保留一个月):

 delete from table1 t where t.update_date<add_months(trunc(sysdate),-1)

 按道理顶多是一天的数据,走索引应该是很快的;但事实上,每次却花了约142秒:

SQL Plan Monitoring Details (Plan Hash Value=1646136989)

=========================================================================================================================================================================

| Id |      Operation      |          Name           |  Rows   | Cost |   Time    | Start  | Execs |   Rows   | Read | Read  | Activity |        Activity Detail        |

|    |                     |                         | (Estim) |      | Active(s) | Active |       | (Actual) | Reqs | Bytes |   (%)    |          (# samples)          |

=========================================================================================================================================================================

|  0 | DELETE STATEMENT    |                         |         |      |           |        |     1 |          |      |       |          |                               |

|  1 |   DELETE            | TABLE1                  |         |      |           |        |     1 |          |      |       |          |                               |

|  2 |    INDEX RANGE SCAN | IDX_TABLE1_UPDATE_DATE  |    303K | 1030 |       143 |     +0 |     1 |        0 | 162K |   1GB |   100.00 | Cpu (1)                       |

|    |                     |                         |         |      |           |        |       |          |      |       |          | db file sequential read (141) |

=========================================================================================================================================================================

从执行计划看,的确走了索引,但又没有命中数据(原因是这个调度并不是一天只跑一次,只有第一次才会有数据),问题是物理读有1个G,这个很不正常;

所以做了一个测试:select min(update_time) from table1 ; 

执行计划也没错:

------------------------------------------------------------------------------------------------

| Id | Operation                    | Name                    | Rows | Bytes | Cost | Time     |

------------------------------------------------------------------------------------------------

|  0 | SELECT STATEMENT             |                         |    1 |    11 |    3 | 00:00:01 |

|  1 |   SORT AGGREGATE             |                         |    1 |    11 |      |          |

|  2 |    INDEX FULL SCAN (MIN/MAX) | IDX_TABLE1_UPDATE_DATE  |    1 |    11 |    3 | 00:00:01 |

------------------------------------------------------------------------------------------------

但同样跑了很久,1G的物理读;

为什么会有这么多的物理读呢?会不会是行预取?应该不是,如果是行预取用于缓存,那第二次跑应该没有物理读了。

很有可能是索引有问题了,至于什么问题懒得去细究了,先在线重建再说;

重建完后,果然正常了,各种查询,都是秒出;

以上是“数据库中走索引删除0条记录却要142秒的优化案例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯