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

本文介绍了数据库的执行计划,它是如何确定SQL语句的执行方式,包括使用索引等信息。通过EXPLAIN可以查看执行计划。数据库系统自动收集统计信息,但某些操作后需手动重新收集。锁定统计信息可以防止自动更新,使用DBMS_STATS.LOCK_TABLE_STATS可实现。当SQL执行慢时,可通过查询v$sqltext和v$sql_plan或在SQL*Plus中设置explain plan来分析执行计划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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工具中使用【解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值