问题描述
我们有一个报告数据库,每天从我们的生产数据库中克隆。源数据库是一个关键任务数据库,我们不能在其中进行任何更改 (不能为统计信息收集设置表首选项)。我们有一个范围分区表,它有600多个分区。
克隆后的每一天,我们都需要在此表上收集统计信息,以确保我们的SQL遵循最佳路径。这是我们的挑战。完整的统计数据收集需要3.5小时。每天很少有分区有新数据。
增量统计是不可能的,因为我们每天从源克隆数据库。源数据库未设置增量统计信息选项,我们无法更改此选项。
我正在考虑一个选项,它将有助于快速收集统计数据。
分区级别统计信息收集-仅适用于处于陈旧状态的分区-但是,如果我们遵循此方法,则不会更新全局统计信息。
有没有其他优雅的方法来做这个统计收集。我们只需要找到陈旧的parititons,然后在精益窗口中收集统计数据并更新全局统计数据。
更新 ****
Clone是来自源系统的所有数据文件的副本。然后,我们从源创建一个控制文件,然后在目标上重命名数据库并挂载数据库。
****
克隆后的每一天,我们都需要在此表上收集统计信息,以确保我们的SQL遵循最佳路径。这是我们的挑战。完整的统计数据收集需要3.5小时。每天很少有分区有新数据。
增量统计是不可能的,因为我们每天从源克隆数据库。源数据库未设置增量统计信息选项,我们无法更改此选项。
我正在考虑一个选项,它将有助于快速收集统计数据。
分区级别统计信息收集-仅适用于处于陈旧状态的分区-但是,如果我们遵循此方法,则不会更新全局统计信息。
有没有其他优雅的方法来做这个统计收集。我们只需要找到陈旧的parititons,然后在精益窗口中收集统计数据并更新全局统计数据。
更新 ****
Clone是来自源系统的所有数据文件的副本。然后,我们从源创建一个控制文件,然后在目标上重命名数据库并挂载数据库。
****
专家解答
由于您正在克隆文件,因此将统计信息完全复制在源节点上。所以我假设你说的是你的统计数据在源节点上是 “坏的” (其中 “坏的” 意味着它们不利于你的报告需求,但它们可以满足你的源节点需求。
基于此,这意味着您可以自由地对报告节点上的统计信息进行任何操作-因此,我的第一条建议是-停止 * 收集 * 如此多的统计信息。
我的意思是
a) 如果只有几个分区是陈旧的,只需在分区级别收集这些分区的统计信息。这应该是有效率的。
b) 大型分区表很少有其统计信息 * 分布 * 发生巨大变化。如果你的50亿行表有200不同的值 (比如) 一个位置列,那么明天,当有51亿行... 那么你可能 * 仍然 * 有200位置... 或者 * 也许 * 1更多。
因此,减少 * 收集 * 和更多 * 设置 * 统计信息,例如
-低不同的值列 (如上面的位置示例),设置一次并每6个月重新访问一次
-递增值 (时间戳、序列等)。简单-只需获取最大值并使用设置柱高水标的值即可。对于许多日期,您甚至不需要查询,因为hwm是 “今天”。
-num_rows-告诉您哪些分区已过时的相同信息 (xxx_tab_modepications) 显示添加了多少新行。用它来增加num_rows。
-块-您将已经有avg_row_len... 因此 'n' 新行可以轻松地映射到块增量中。
一旦分区表变得很大...它通常达到稳定状态。在 * 增长 * 方面不是稳定的,但是在数据分布和其中的数据模式方面是稳定的。为什么要让数据库烧掉几个小时的cpu来告诉你一些你已经知道的事情。
基于此,这意味着您可以自由地对报告节点上的统计信息进行任何操作-因此,我的第一条建议是-停止 * 收集 * 如此多的统计信息。
我的意思是
a) 如果只有几个分区是陈旧的,只需在分区级别收集这些分区的统计信息。这应该是有效率的。
b) 大型分区表很少有其统计信息 * 分布 * 发生巨大变化。如果你的50亿行表有200不同的值 (比如) 一个位置列,那么明天,当有51亿行... 那么你可能 * 仍然 * 有200位置... 或者 * 也许 * 1更多。
因此,减少 * 收集 * 和更多 * 设置 * 统计信息,例如
-低不同的值列 (如上面的位置示例),设置一次并每6个月重新访问一次
-递增值 (时间戳、序列等)。简单-只需获取最大值并使用设置柱高水标的值即可。对于许多日期,您甚至不需要查询,因为hwm是 “今天”。
-num_rows-告诉您哪些分区已过时的相同信息 (xxx_tab_modepications) 显示添加了多少新行。用它来增加num_rows。
-块-您将已经有avg_row_len... 因此 'n' 新行可以轻松地映射到块增量中。
一旦分区表变得很大...它通常达到稳定状态。在 * 增长 * 方面不是稳定的,但是在数据分布和其中的数据模式方面是稳定的。为什么要让数据库烧掉几个小时的cpu来告诉你一些你已经知道的事情。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
622次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
610次阅读
2025-04-15 17:24:06
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
508次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
493次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
471次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
447次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
442次阅读
2025-04-22 00:13:51
一页概览:Oracle GoldenGate
甲骨文云技术
436次阅读
2025-04-30 12:17:56
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
436次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
387次阅读
2025-04-17 09:30:30