oracle - 如何提高 dbms_stats.gather_schema_stats 的性能
问题描述
使用以下块收集模式统计数据需要 16.30 小时。有什么方法可以提高性能吗?
begin
dbms_stats.gather_schema_stats(
ownname => 'SCHEMA_NAME',
estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all columns size AUTO',
cascade => true,
degree => 16
);
end;
此活动每周执行一次,但用户不能等待 16 小时。
我的 Oracle 数据库是 11.2.0 版,并且架构中有一些大分区表,其中数据插入/删除经常发生。
解决方案
考虑一个额外的参数options
,其GATHER AUTO
值介于ownname
和之间estimate_percent
,仅收集没有统计信息或行更改超过 10% 的表的统计信息,以减少时间段,顺便说一下,保留estimate_percent
参数,dbms_stats.auto_sample_size
因为数据库会自动为您估计值:
begin
dbms_stats.gather_schema_stats(
ownname => 'SCHEMA_NAME',
options => 'GATHER AUTO',
estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all columns size AUTO',
cascade => true,
degree => 16
);
end;
/
推荐阅读
- android - 从 React Native 中的目录加载一组图像
- java - 如何在 Spring WebClient 中捕获 ConnectionException?
- c# - UML中的Thread等其他类型的属性?
- python - 如何将 CountVectorizer 与聚合数据一起使用?
- react-native - 如何禁用滑动打开但不关闭反应原生?
- javascript - 期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions(第 14/15 行)
- java - 'mvn clean' vs.'mvn clean install'(当插件执行附加到'clean'时)
- function - 地图地图与地图地图
- java - Ionic 4 Capacitor 中原生插件动画的视觉错误
- amazon-web-services - 可以在存储桶和对象级别控制用户对 S3 的访问吗?