设为首页 加入收藏

TOP

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs(一)
2014-11-24 01:33:44 来源: 作者: 【 】 浏览:25
Tags:数据库 性能 优化 统计 信息 对象 概述 收集 扩展 dbms_stats.get_prefs

数据库性能优化
相关书籍:
1.基于成本的Oracle优化法则
2.Oracle性能诊断艺术
3.基于Oracle的SQL优化
-----------------------------------------------------------------------------------------
两种优化器:

CBO cost-base optimizer
基于cost 更大适应性/灵活性/10g开始

RBO rule-base optimizer
基于规则 制定了15条/10g以前
-------------------------------------------------------------------------------------------
统计信息:
1.系统统计信息
cpu、I/O
exec dbms_stats.gather_system_stats;
2.数据库对象统计信息
表、索引、列、扩展
exec dbms_stats.gather_table_stats('TEST_USER1','TEST_1');
--收集表的统计信息(同时会级联收集索引和列的统计信息)
exec dbms_stats.gather_table_stats('TEST_USER1','TEST_1',cascade=>false);
--不会联机收集索引和列的统计信息
exec dbms_stats.gather_index_stats('TEST_USER1','INDEX_NAME');
--收集索引的统计信息

alter table table_name enable row movement;
--允许表的行迁移
alter table table_name shrink space;
--降低表的高水位线

exec dbms_stats.gather_database_stats;
--收集整个数据库的统计信息

-------------------------------------------------------------------------------------------
直方图
扩展统计信息

query rewrite 查询重写
星形转换
视图合并
为此前推
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

1,统计信息概述
统计信息是oracle CBO计算候选执行计划的cost的基础。因此,获取准确的统计信息,
是oracle能够选择最优执行计划(cost最低)的首要条件。
在oracle 9i的时候,oracle只计算每个执行计划的I/O成本,并将其作为评价执行计划好坏的依据。
从10g开始,oracle将sql执行中消耗的cpu资源,也作为成本计入执行计划的成本计算。
因此,一个执行计划的cost值,包含了cpu和I/O两种资源的成本。

与统计信息相关的几个初始化参数
SQL> show parameter statistics;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_pending_statistics boolean FALSE
statistics_level string TYPICAL
timed_os_statistics integer 0
timed_statistics boolean TRUE

optimizer_use_pending_statistics:
显示CBO是否使用pending状态的统计信息。
一般情况下,我们收集完统计信息,则oracle会默认将新收集到的统计信息置于publish状态,这样CBO可以随时使用。
我们可以使用dbms_stats.DELETE_PENDING_STATS删除处于pending状态的统计信息,也可以使用
dbms_stat.set_*_prefs来设置统计信息是否处于publish状态。

timed_statistics
是否收集与时间相关的统计信息。例如cpu和elapsed times。
如果STATISTICS_LEVEL设置为TYPICAL或者ALL, 则该参数的默认值为true;
如果STATISTICS_LEVEL设置为BASIC, 则该参数的默认值为false。
从11.1.0.7.0开始,如果STATISTICS_LEVEL设置为TYPICAL或者ALL,该参数不能被设置为false。

timed_os_statistics
该参数指定了当从客户端生成一个请求,或者完成一个请求的时候,收集系统统计信息的时间间隔(单位为s)。这又分了两种情况:
dedicated 模式
在用户登录和后继客户端通过OCI调用从而作为一个远程过程调用信息进入oracle server时,oracle收集系统统计信息。
shared 模式
在客户端调用oracle完成时,oracle收集系统统计信息。

如果STATISTICS_LEVEL设置为ALL, 则该参数默认值为5;
如果STATISTICS_LEVEL设置为BASIC或者TYPICAL, 则该参数默认值为0。

需要注意的是,收集系统统计信息是相当消耗系统资源的活动。oracle强烈建议你在完成系统统计信息收集之后,立即将该参数修改为0。

statistics_level
控制收集统计信息的级别,有三个参数值:
BASIC :收集基本的统计信息
TYPICAL:收集大部分统计信息(数据库的默认设置)
ALL:收集全部统计信息,除了收集typical模式下的所有统计信息之外,还将收集基于时间的os统计信息和执行计划的统计信息。
(执行计划的统计信息包括什么)

如果将默认值typical改为basic,则将停止收集如下对象的统计信息:
Automatic Workload Repository (AWR) Snapshots
Automatic Database Diagnostic Monitor (ADDM)
All server-generated alerts
Automatic SGA Memory Management
Automatic optimizer statistics collection
Object level statistics
End to End Application Tracing (V$CLIENT_STATS)
Database time distribution statistics (V$SESS_TIME_MODEL and V$SYS_TIME_MODEL)
Service level statistics
Buffer cache advisory
MTTR advisory
Shared pool sizing advisory
Segment level statistics
PGA Target advisory
Timed statistics
Monitori

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇全面解析Oracle数据库中管理实例.. 下一篇带你深入了解管理Oracle实例的相..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: