gpt4 book ai didi

Oracle:分析表与 Gather_Table_Stats 与 Gather_Schema_Stats

转载 作者:行者123 更新时间:2023-12-04 16:01:43 25 4
gpt4 key购买 nike

目前在我的数据库中,从事数据库工作的前任创建了一项工作,该工作在每个周末收集数据库中所有表的列表,并分别为每个表按顺序执行以下两个命令:

ANALYZE TABLE xxTable_Namexx ESTIMATE STATISTICS FOR ALL INDEXED COLUMNS SIZE 75 SAMPLE 100 PERCENT;

EXEC dbms_stats.gather_table_stats(xxSchemaxx,xxTable_Namexx,cascade=>TRUE);

最近有人向我建议:

1.) ANALYZE table 是收集统计数据的旧方法,优化器不再使用它了吗?这个命令的统计数据在整个数据库中是无用的还是在某处使用是真的吗?

2.) 不用做所有这些,每天运行就足够了:

dbms_stats.gather_schema_stats(xxSchemaxx,cascade=>true);

如果未指定,大小/样本百分比是多少?

3.) 在数据库中收集统计信息的一般做法/频率是多少。 (数据每天都在更新、插入、删除)。我仍然更喜欢每个周末都这样做。

提前致谢。

最佳答案

是的,ANALYZE现在很少使用了:

For the collection of most statistics, use the DBMS_STATS package, which lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways. See Oracle Database PL/SQL Packages and Types Reference for more information on the DBMS_STATS package.

Use the ANALYZE statement (rather than DBMS_STATS) for statistics collection not related to the cost-based optimizer:

  • To use the VALIDATE or LIST CHAINED ROWS clauses

  • To collect information on freelist blocks

如果未指定,大小/样本百分比是多少?

参数调用estimate_percent :

Percentage of rows to estimate (NULL means compute): The valid range is [0.000001,100]. Use the constant DBMS_STATS.AUTO_SAMPLE_SIZE to have Oracle determine the appropriate sample size for good statistics. This is the default.The default value can be changed using the SET_DATABASE_PREFS Procedure, SET_GLOBAL_PREFS Procedure, SET_SCHEMA_PREFS Procedure and SET_TABLE_PREFS Procedure.

您可以通过函数 DBMS_STATS.get_param('ESTIMATE_PERCENT')DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT') 查询默认值

默认情况下,Oracle 在安装时创建一个内部调度程序作业,它会在夜间自动收集统计信息。 (称为 BSLN_MAINTAIN_STATS_JOB)

关于Oracle:分析表与 Gather_Table_Stats 与 Gather_Schema_Stats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com