数据库------收集统计信息与执行计划

1、什么是数据库的执行计划
执行计划:数据库如何执行sql语句,包括如何执行查询,是否通过索引查询以及索引信息,数据库服务器会选择资源消耗最小的方案(可以理解为当前最优的执行方案)
使用explain可以为sql语句设置标志,返回执行计划信息
【explain select * from user_money a where a.user_name = ‘张三’】

大神解释参考
数据库系统自动收集统计信息,当insert,truncate,delete,update的数据量超过10%,会自动重新收集统计信息。
常见的分区表DDL如 split partition、add partition都会生成没有统计信息的表分区table partition,dbms_stats.lock_table_stats锁表统计信息对没有统计信息的分区同样有效,自动收集统计信息的作业不会收集这些实际没有统计信息的分区。
使用DBMS_STATS.LOCK_TABLE_STATS锁定相关统计信息 语句为: EXECUTE DBMS_STATS.LOCK_TABLE_STATS (‘owner name’, ‘table name’); 查询锁定状态 SELECT stattype_locked FROM dba_tab_statistics 当锁定表的统计信息后,这个表相关的对象的统计信息也被锁定,比如列信息、直方图、索引的统计信息。 在锁定前,请在适当时刻对表的统计信息进行收集,并确认当前的统计信息是合适的。
2、如何更改数据库的执行计划(如何得到最优的执行计划)
执行EXECUTE DBMS_STATS.LOCK_TABLE_STATS (‘owner name’, ‘table name’); 重新收集统计信息即可,因为数据库的自动收集统计信息不会收集常见分区表的统计信息。
3、经验积累
重跑时直接向引擎中间表插入数据,未执行BIZ存储过程(收集统计信息的过程未被调用),导致数据库进行了当前认为最好的执行计划(实际没有根据当前数据库的具体情况进行分析),对当前数据库来说并不是最好的执行计划,导致读取数据特别慢。
4、PL\SQL怎么查看执行计划
plsql工具中使用【解释计划窗口】查看执行计划
5、实例分析-------当sql执行非常慢
方法一:
先查v

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值