首页 > 编程知识 正文

oracle数据库参数优化,oracle查询慢怎么优化

时间:2023-05-04 13:46:26 阅读:20173 作者:726

1 .选择适当的Oracle优化程序Oracle优化程序具有三种类型的: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) )。 要设置默认优化程序,请在init.ora文件中为OPTIMIZER_MODE参数声明各种声明,例如RULE、COST、CHOOSE、ALL_ROWS和FIRST_ROWS 当然你也在SQL语句中

1 .选择适当的Oracle优化程序

Oracle优化程序有三种类型的:

a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选项)。

要设置默认优化程序,请在init.ora文件中为OPTIMIZER_MODE参数声明各种声明,例如RULE、COST、CHOOSE、ALL_ROWS和FIRST_ROWS 当然,你也在SQL语句级别或对话(session )级别涵盖了它。

要使用基于成本的优化程序(CBO,基于成本的优化程序),必须经常运行analyze命令以提高数据库中对象统计信息的精度。

如果数据库的优化程序模式设置为“选项”(CHOOSE ),则实际的优化程序模式与是否运行了analyze命令无关。 如果table已经分析,优化程序模式将自动变为CBO;反之,数据库将采用RULE格式的优化程序。

默认情况下,Oracle采用选择优化程序。 为了避免不必要的“全表扫描”(full table scan ),必须尽量避免使用选择优化程序,并直接采用基于规则或基于成本的优化程序。

如何访问表

Oracle采用了记录在两种访问表中的方式:

a .全表扫描:

所有表扫描是指按顺序访问表中的每条记录。 Oracle通过一次读取多个数据块来优化所有表扫描。

使用ROWID访问表:

可以使用基于ROWID的访问方法(包括表中记录的物理位置信息)简化对表的访问。 Oracle采用索引(INDEX )来实现数据与存储数据的物理位置之间的联系。 索引通常可以快速访问ROWID,从而提高基于索引列的查询的性能。

3 .共享SQL语句

为了避免重复分析同一SQL语句,在第一次分析之后,Oracle将SQL语句存储在内存中。 此SQL语句允许所有数据库用户共享系统全局空间SGA (系统全局区SGA )中的共享池)中的内存。 因此,在执行SQL语句(有时称为游标)时,如果它与以前执行的语句完全相同,则Oracle可以立即获取已解析语句和最佳执行路径。 Oracle的此功能大大提高了SQL的执行性能,并节省了内存使用量。

不幸的是,Oracle只为简单的表提供缓存。 此功能不适用于多表连接查询。

数据库管理员必须在init.ora中为此区域设置相应的参数。 此内存空间越大,可以保留更多语句。 当然,被共享的可能性也很高。

魔术饼向Oracle提交SQL语句,Oracle首先在此内存中查找相同的语句。

请注意,Oracle对两者保持严格的匹配,并且SQL语句必须完全相同才能实现共享(包括空格、换行符等)。

的语句必须满足三个条件:

a .文字水平比较:

当前执行的语句和共享池中的语句必须完全相同。

例如:

SELECT * FROM EMP; 这篇技术文章来自网络。 如果您不打算侵犯您的权益,请单击此处反馈版权投诉。 php中文网

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。