`
heavenslv
  • 浏览: 82294 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL优化 ----- 共享 SQL 语句

阅读更多

为了不重复解析相同的SQL 语句,在第一次解析之后, ORACLE 将SQL 语句存放在内存中.这

块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的

数据库用户共享. 因此,当你执行一个SQL 语句(有时被称为一个游标)时,如果它和之前的执行过

的语句完全相同, ORACLE 就能很快获得已经被解析的语句以及最好的执行路径. ORACLE 的这

个功能大大地提高了SQL 的执行性能并节省了内存的使用.可惜的是ORACLE 只对简单的表提

供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询.

数据库管理员必须在init.ora 中为这个区域设置合适的参数,当这个内存区域越大,就可以保留

更多的语句,当然被共享的可能性也就越大了.

当你向ORACLE 提交一个SQL 语句,ORACLE 会首先在这块内存中查找相同的语句.这里需

要注明的是,ORACLE 对两者采取的是一种严格匹配,要达成共享,SQL 语句必须完全相同(包括空

格,换行等).共享的语句必须满足三个条件:

A.字符级的比较:

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

例如:

SELECT * FROM EMP;
 

和下列每一个都不同

SELECT * from EMP;
Select * From Emp;
SELECT * FROM EMP;
 

B.两个语句所指的对象必须完全相同:

例如:

用户 对象名 如何访问

Jack sal_limit private synonym
Work_city public synonym
Plant_detail public synonym
Jill sal_limit private synonym
Work_city public synonym
Plant_detail table owner
 

考虑一下下列SQL 语句能否在这两个用户之间共享.

 

共享SQL语句

 

 

C.两个SQL 语句中必须使用相同的名字的绑定变量(bind variables)

例如:

第一组的两个SQL 语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,

赋于不同的绑定变量相同的值)

a.

select pin , name from people where pin = :blk1.pin;
select pin , name from people where pin = :blk1.pin;
 

b.

select pin , name from people where pin = :blk1.ot_ind;
select pin , name from people where pin = :blk1.ov_ind;
 
分享到:
评论

相关推荐

    SQL优化-系列文档

    5. **游标和共享池管理**:了解游标的类型,如何减少开销,通过调整 cursor_sharing 参数来鼓励SQL语句的重用。 6. **统计信息收集**:学习何时和如何收集表、索引和其他对象的统计信息,以确保CBO做出准确的决策。...

    sql优化-oracle数据库.ppt

    《SQL优化——Oracle数据库》 ...总之,SQL优化涉及多个层面,从编写高效的SQL语句,到合理利用数据库特性,都需要综合考虑。通过深入理解数据库工作原理和SQL执行机制,可以有效提升Oracle数据库的性能和响应速度。

    SQL语句优化手册

    - **共享池搜索**:检查SQL语句是否已经在共享池中存在,以避免重复解析。 - **数据字典搜索**:获取表和索引的元数据。 - **搜索路径计算**:确定最优的数据访问路径。 - **标准化SQL编程**:采用一致的SQL编程风格...

    ORACLE-SQL性能优化大全.pdf

    - **SQL语句处理过程**:理解SQL语句在Oracle中的处理流程对于优化至关重要。 - **共享SQL区域**:Oracle会在内存的共享池中缓存已执行过的SQL语句,以便后续执行时可以直接使用而无需重新解析。 - **SQL语句处理...

    SQL-Server-SQL语句大全

    ### SQL Server SQL语句大全:知识点详解 #### 一、设置服务器内存选项 在SQL Server环境中,合理配置服务器内存对于优化数据库性能至关重要。通过调整最小和最大服务器内存配置项,可以确保SQL Server能够高效地...

    SQL语句优化规则

    ORACLE的共享SQL语句功能可以避免重复解析,提高执行效率。当SQL语句在内存中的共享池被找到时,可以直接使用已解析的执行路径,节省了时间和内存资源。但要注意,SQL语句必须完全一致(包括空格、换行等)才能共享...

    sql优化小工具

    - 格式化后的SQL语句可以导出为文本文件,方便在团队成员之间共享和讨论。 - 有的工具甚至提供了直接复制到剪贴板的功能,方便在IDE或数据库管理工具中粘贴使用。 总的来说,"SQL优化小工具"是数据库工作者的得力...

    通过分析SQL语句的执行计划优化SQL.doc

    本文主要探讨了如何通过分析SQL语句的执行计划来优化查询性能,涉及到共享SQL语句、ROWID、Recursive SQL、Row Source、Driving Table和Probed Table等相关概念。 首先,SQL语句的共享是ORACLE数据库提高性能的一种...

    经典SQL语句大全 - 数据库

    ### 经典SQL语句大全解析 #### 一、数据库操作(DDL) 1. **创建数据库** 创建一个新的数据库可以使用如下语句: ```sql CREATE DATABASE database-name; ``` 其中`database-name`是新创建数据库的名字。 2...

    Oracle SQL语句性能优化

    综上所述,Oracle SQL语句性能优化涉及多个方面,包括选择合适的优化器、优化数据访问方式、共享SQL语句、索引策略、查询结构优化以及维护数据库统计信息。通过综合运用这些策略,可以显著提升Oracle数据库的运行...

    SQL-on-Hadoop: Full Circle Back to Shared-Nothing Database Architectures

    - **Hive**:作为最早期的SQL-on-Hadoop系统之一,Hive通过底层的MapReduce或Tez框架处理类似SQL的查询语句。它提供了一种简单的方式来查询存储在Hadoop中的大量数据。Hive引入了ORC文件格式以优化数据存储和读取...

    通过分析SQL语句的执行计划优化SQL

    ### 通过分析SQL语句的执行计划优化SQL 在数据库管理与开发过程中,SQL语句的性能优化至关重要。本文将详细介绍如何理解SQL及其执行计划,并给出具体的优化策略。通过优化SQL,可以显著提升应用程序的响应速度及...

    ORACLE-SQL优化

    在优化SQL语句执行过程时,了解ORACLE优化器的工作机制,表之间的关联方式,以及如何获取和分析SQL执行计划是至关重要的。以下,我们将详细介绍ORACLE-SQL优化的关键知识点: 一、优化基础知识概述 优化基础知识...

    SQLTracker,抓取sql语句的工具

    5. **性能优化**:通过分析SQLTracker提供的数据,用户可以进行SQL语句的优化,例如调整索引、改进查询语句或者优化数据库架构,以提升整体系统性能。 6. **安全监控**:此外,SQLTracker还可以用于监控潜在的安全...

    Oracle-SQL优化.docx

    在优化 SQL 语句时,需要注意共享 SQL 语句。共享 SQL 语句可以减少资源占用和提高系统性能。 2.4 选择最有效率的表名顺序 在优化 SQL 语句时,需要选择最有效率的表名顺序。不同的表名顺序可以带来不同的优化效果...

    Oracle sql语句优化规则汇总

    共享SQL语句的有效性和频率,部分取决于共享池的大小。数据库管理员应根据系统的具体需求,合理设置共享池的参数,以达到最佳的性能平衡。 综上所述,Oracle SQL语句优化是一个多方面的过程,涉及优化器的选择、...

    oracle-sql优化

    SQL优化涉及多个方面,包括理解SQL语句的处理过程、Oracle优化器的工作原理、执行计划的获取与分析等。 1. **优化基础知识**:性能管理是关键,需要在系统开发初期就开始考虑,并设立明确的性能目标。调整过程中...

Global site tag (gtag.js) - Google Analytics