专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Oracle性能优化方法 oracle数据库性能优化方法论和最佳实践

ins518 2024-10-19 07:16:01 技术文章 8 ℃ 0 评论

SQL优化是Oracle数据库优化的重要方面,高效的sql语句能极大的减少系统运行之后的性能问题。

比如建合适的索引,使用合理的表连接及绑定变量等。

为避免频繁的性能调整,最好在最初的阶段就做好合理的设计,我们称之为主动的性能调整。而以后部署后,我们还需要调整系统sga的内存参数,对文件存储作合理的分布减少IO等措施。

1,SQL查询处理过程的详解

查询处理和查询优化是两个相关联的概念。查询处理是获取数据的过程,查询优化是通过分析sql以及其他的资源获取最佳的执行计划的过程,最佳的执行计划是之小号资源最少的计划。

这些资源包括服务器的CPU和系统io,一般分为三个阶段:

语法分析阶段,语句优化阶段,查询执行阶段。

1.1 语法分析

语法分析是在sga中完成的。如sql中的关键字是否正确,涉及的表定义和相关列是否存在,是或对表有相关的权限等。这些都是通过数据字典(存在共享池中),如果都没问题,则进入第二个阶最佳执行计划阶段。

1.2 基于成本的优化

基于成本的优化即CBO,这个过程需要使用优化sql语句的各种数据资源。如表自身的数据,索引统计数据等。

1.3 选择cbo的优化方式

cbo通过将sql语句的吞吐量作为优化目标。而在一些条件下需要将相应时间作为优化目标,此时需要返回sql查村的第一行或者前几行的数据。

Oracle提供了三种优化方式,满足不同的查询需求。

all_rows :

该方式是Oracle的默认方式,优化目标是实现查询的最大吞吐量。

first_rows_n :

该方式是使用cbo的成本优化输出查询前几行的数据,目标是满足最快的相应查询需求。

first_rows:

优化尽快输出查询的前几行数据,满足最小的相应时间需求。

eg:查询当前数据的cbo优化方式

SQL> show parameter optimizer_mode;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

optimizer_mode string ALL_ROWS

从输出结果看出,Oracle默认的优化方式,是满足最大吞吐的作为优化的目标。那如何设置cbo的优化方式?

eg:在实例级别设置优化方式

SQL> alter system set optimizer_mode = first_rows_10 scope = both;

System altered

其实也可以在初始化参数文件中修改。

eg:会话级别设置cbo的优化方式

SQL> alter session set optimizer_mode = all_rows;

Session altered

在会话级别设置优化方式必须使用hint提示,这种方式只用于查询语句,或者子查询

select /*+first_rows_10*/ id,name from c##djj.emp;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表