数据库性能优化 相关书籍: 1.基于成本的Oracle优化法则 2.Oracle性能诊断艺术 3.基于Oracle的SQL优化 —————————————————————————————– 两种优化器: CBO cost-base optimizer 基于cost 更大适应
数据库性能优化
相关书籍:
1.基于成本的Oracle优化法则
2.Oracle性能诊断艺术
3.基于Oracle的SQL优化
———————————-本文来源gaodai$ma#com搞$$代**码网——————————————————-
两种优化器:
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收集系统统计信息。