少了索引,向表中插入数据突然慢了几百倍

背景

最近一个千万级的普通表,经常需要通过delete方式删除7天以前的数据,删除效率特别低,后面将该改表转化成按天创建的分区表,方面高效的删除数据,结果还是出现了一意外,少建了一个索引导致入库时慢了几百倍。

问题描述

研发反应的入库非常慢,去count这个分区表时确实慢,基本上是一秒一条记录。

排查思路

1、查看表上是否有触发器、序列
2、检查该SQL语句以及其执行计划
获取sql id

select * from v$sql where sql_text like '%表名%'

根据SQL ID查看执行计划

select * from v$sql_plan where sql_id=

或是直接从研发那里查看sql
最后发现该条SQL语句是merge操作,插入时先根据某一个字段判断记录是否存在,如果不存在做插入操作。

总结

1、思维局限了,之前只考虑了insert方式入库,后面通过v$sql抓取到SQL语句看到执行计划才发现问题所在。
2、转化为分区表时少创建索引问题
3、删除分区表时全局索引会失效,需要重新rebuild索引。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值