Oracle插入数据的一次优化(insert ,,,,select,,,,)

一次优化的谈论:

在QQ群中 又看到问如下sql插入为什么会这么慢?正好群里面有个优化大事顺便给我们上了一课,我就顺手记录一下。

c6d10099bf79f5fa77844b9c0e974a2cb0a.jpg

大家的优化思路:

1、突然变慢的话, 你查询一下目前数据库 中正在经历的等待事件哈。

2、append hit   (这个可以)

3、并行 (生产不建议开并行,对性能消耗很大)

4、 MERGE INTO (MERGE INTO 最大的用处不在这边,  在那种业务,关联更新, 或者要么没有就插入,有就更新的业务。 merge  into 精妙之处在于 可以走两种执行计划。)

5、nologging  (思想可以,但是没有见过在insert 有这个)

最后的优化思路:

先找原因  在优化

 1  弄清楚是 insert 慢还是 select 慢。那个慢就搞那个   2 明显这个语句是在执行哈,  我们就可以通过 v$session 这个试图观察这个 sql 执行过程中的等待事件, 针对等待事件作出处理,  3 另外 session这个试图中也可以看到, 有没有被阻塞啊。    

 insert的时候呢, 你的undo 块多不多, 如果插入的数据量很大, 你比一次插50G的数据。。。  那完蛋了, 不好优化了, 你想啊, 你没事1个事物,插入50G的数据, 那还优化个, 呵呵。。 赶紧做 大事物切片去吧

比如, insert时候, 都被阻塞了。。   insert阻塞是很常见的, 这个不举例子了。以后说

比如 insert慢的时候呢,  你要维护啊, 维护索引造成巨大的开销呢? 典型的索引分裂。。。

那你赶紧去做,索引热点块,散热啊。。。

是的额,索引会导致DML慢

如果Select 慢,那就首先去看一下是否有标量子查询。标量子查询  需要改为外链接

看表数据量大小,找驱动表,建立索引

你看表, tem这个表, 看着像临时表啊, 是否有统计信息啊。因为临时表,如果没有统计信息的话,会动态采样的。

  但是我遇到好几个案例, 这个表就不能收集统计信息, 一收集, SQl就慢了。。

看下这个查询 用使用到B表的两个字段,这样我们可以考虑下是否在B表的两个字段创建索引,就是说用索引扫描代替 全表扫描, 减少数据扫描的总量还是可以的,那么问题来了,这个索引还怎么创建呢?

  index (B 表两个字段), 还是 index(B 表两个字段,0)?这里引深一下,索引不存储null值,那么为了避免null值索引失效的问题,我们一般会在要创建索引字段后面叫一个常量,比如create idx_id on t(id,0),不管id是否有null值,但是组合索引都不会存储null,这个索引就不会失效。

f0d0e19992e3c905f0459eae77009baa525.jpg

回到这个话题,如果 where A.OLDER_ID=B.OLDER_ID,那么 我们可以使用 index (B 表两个字段),因为等值关联不存在空值,如果是where A.OLDER_ID(+)=B.OLDER_ID,也可以使用 index (B 表两个字段),右连接可以确保 B表没有NULL值。如果是左连接A.OLDER_ID(+)=B.OLDER_ID(+),那么B表是有可能存在null值,所以必须的使用 index(B 表两个字段,0) 这种方式创建索引。

当然也可以在select 查询开多快alter session set db_file_multiblock_read_count=128;)

 

 比如, 到最后呢。 看等待事件, 比如多快读等待事件。

https://blog.csdn.net/daiqiulong2/article/details/81513084 优化大神的博客。

 

 

 

转载于:https://my.oschina.net/u/3862440/blog/2397567

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值