oracle数据库性能影响之Sql parse

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

1,Sql parse的种

Sql parse又通常分为硬解析和软解析,当sql第一次执行的时候,会发生硬解析,之后的执行如果在shared pool中能找到就是软解析。因此,为提高数据性能,尽可能的让每次执行的SQL在shared pool找到。

 

2,SQL在哪些情况下会发送硬解析?

统计信息改变

2Sql中的表上有做ddl操作,包括grant和revoke。

3执行计划被踢出shared pool

4开启了trace

5绑定变量长度变化

6)启用outline,11g启用SPM

7)SQL语句相同但是所引用的表不同,例如不是同一属主

8)环境发生变化,如Sort area size、Hash area size和locale setting发生变化

 

3,软解析的条件

 当你向ORACLE 提交一个SQL语句,ORACLE会首先在共享内存中查找是否有相同的语句。这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。如果完全相同,才会有软解析。

4,如何判断两个sql语句是否是同一个sql语句呢?

1)大小写和空格以及字母值不一致:

SELECT * FROM emp WHERE empno = 1000;

和下列每一个都不同

SELECT * from emp WHERE empno = 1000;

SELECT * FROM emp WHERE  empno = 1000;

SELECT * FROM emp WHERE empno = 2000;

在上面的语句中列值都是直接SQL语句中的,我们将这类sql称为硬编码SQL或字面值SQL

 

2)绑定变量名称不同

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

例如:

a. 2个sql语句被认为相同

select * from emp where empno = :empno;

select * from emp where empno = :empno;

b. 2个sql语句被认为不相同

select * from emp where empno = :empno1;

select * from emp where empno = :empno2;

我们将上面的这类语句称为绑定变量SQL。

 

3)对象名称相同,但是属主不同

将所发出语句中涉及的对象与已存在语句所涉及对象相比较。

例如:

如用户user1与用户user2下都有EMP表,则

用户user1发出的语句:SELECT * FROM EMP; 与

用户user2发出的语句:SELECT * FROM EMP; 被认为是不相同的语句,

因为两个语句中引用的EMP不是指同一个表。

4) SQL语句中使用的捆绑变量的捆绑类型必须一致


目录
相关文章
|
6天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
14天前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
59 10
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
17天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
25 7
|
17天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
21 6
|
17天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5
|
15天前
|
SQL 关系型数据库 MySQL
惊呆:where 1=1 可能严重影响性能,差了10多倍,快去排查你的 sql
老架构师尼恩在读者交流群中分享了关于MySQL中“where 1=1”条件的性能影响及其解决方案。该条件在动态SQL中常用,但可能在无真实条件时导致全表扫描,严重影响性能。尼恩建议通过其他条件或SQL子句命中索引,或使用MyBatis的`<where>`标签来避免性能问题。他还提供了详细的执行计划分析和优化建议,帮助大家在面试中展示深厚的技术功底,赢得面试官的青睐。更多内容可参考《尼恩Java面试宝典PDF》。
|
17天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
15 2
|
SQL Oracle 关系型数据库
oracle用SQL Plus输入命令为什么只显示2
oracle用SQL Plus输入命令为什么只显示2
636 0
oracle用SQL Plus输入命令为什么只显示2

推荐镜像

更多