热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

HardParse&SoftParse-mysql教程

DDL每次执行都需要进行硬解析。SQL解析过程Oracle对此SQL将进行几个步骤的处理过程:1、语法检查(syntaxcheck):检查此sql的拼写是否语法。2、语义检查(semanticcheck):诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。3、对sql语

DDL每次执行都需要进行硬解析。 SQL 解析过程 Oracle对此SQL将进行几个步骤的处理过程: 1、语法检查(syntax check): 检查此sql的拼写是否语法。 2、语义检查(semantic check): 诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。 3、对sql语

DDL每次执行都需要进行硬解析。

SQL 解析过程

Oracle对此SQL将进行几个步骤的处理过程:

1、语法检查(syntax check): 检查此sql的拼写是否语法。

2、语义检查(semantic check): 诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。

3、对sql语句进行解析(prase): 利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。

4、执行sql,返回结果(execute and return)

5个执行步骤:

1:语法分析

2:权限与对象检查

3: 在共享池中检查是否有完全相同的之前完全解析好的. 如果存在,直接跳过4和5,运行Sql, 此时算soft parse.

4:选择执行计划

5:产生执行计划

3的解释:

Oracle将会对传递进来的SQL语句使用HASH函数运算得出HASH值,再与共享池中现有语句的HASH值进行比较看是否一一对应。现有数据库中SQL语句的HASH值我们可以通过访问v$sql、v$sqlarea、v$sqltext等数据字典中的HASH_VALUE列查询得出。

如果SQL语句的HASH值一致,那么ORACLE事实上还需要对SQL语句的语义进行再次检测,以决定是否一致。那么为什么Oracle需要再次对语句文本进行检测呢?不是SQL语句的HASH值已经对应上了?事实上就算是SQL语句的HASH值已经对应上了,并不能说明这两条SQL语句就已经可以共享了。

Dictionary Cache

The data dictionary is a collection of database tables and views containing reference information about the database, its structures, and its users. Oracle accesses the data dictionary frequently during SQL statement parsing. This access is essential to the continuing operation of Oracle.

The data dictionary is accessed so often by Oracle that two special locations in memory are designated to hold dictionary data. One area is called the data dictionary cache, also known as the row cache because it holds data as rows instead of buffers (which hold entire blocks of data). The other area in memory to hold dictionary data is the library cache. All Oracle user processes share these two caches for access to data dictionary information.

Parsing

Parsing is one stage in the processing of a SQL statement. When an application issues a SQL statement, the application makes a parse call to Oracle. During the parse call, Oracle:

Checks the statement for syntactic and semantic validity

Determines whether the process issuing the statement has privileges to run it

Allocates a private SQL area for the statement

Oracle also determines whether there is an existing shared SQL area containing the parsed representation of the statement in the library cache. If so, the user process uses this parsed representation and runs the statement immediately. If not, Oracle generates the parsed representation of the statement, and the user process allocates a shared SQL area for the statement in the library cache and stores its parsed representation there.

Note the difference between an application making a parse call for a SQL statement and Oracle actually parsing the statement. A parse call by theapplication associates a SQL statement with a private SQL area. After a statement has been associated with a private SQL area, it can be run repeatedly without your application making a parse call. A parse operation by Oracle allocates a shared SQL area for a SQL statement. Once a shared SQL area has been allocated for a statement, it can be run repeatedly without being reparsed.

Both parse calls and parsing can be expensive relative to execution, so perform them as seldom as possible.


推荐阅读
  • 在互联网信息爆炸的时代,当用户需求模糊或难以通过精确查询表达时,推荐系统成为解决信息过载的有效手段。美团作为国内领先的O2O平台,通过深入分析用户行为,运用先进的机器学习技术优化推荐算法,提升用户体验。 ... [详细]
  • 本文详细介绍了如何在现有的Android Studio项目中集成JNI(Java Native Interface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。 ... [详细]
  • 本文将深入探讨如何使用 SQLAlchemy 在数据库模型中定义和操作不同类型的表间关系,包括一对一、一对多及多对多的关系。 ... [详细]
  • 机器学习公开课备忘录(三)机器学习算法的应用与大数据集
    机器学习公开课备忘录(三)机器学习算法的应用与大数据集对应机器学习公开课第六周和第10周机器学习算法模型的选择与评价1、对于一个data,可以将data划分为trainingset、t ... [详细]
  • 深入解析计算机内存管理机制
    本文详细探讨了计算机操作系统的内存管理技术,包括虚拟内存的概念、分页系统的工作原理、页面置换算法的选择与应用、分段技术以及段页式的内存管理方式。通过对比分析分页与分段的优缺点,帮助读者全面理解内存管理的核心理念。 ... [详细]
  • 支持向量机(SVM)是一种基于统计学习理论的模型,主要在VC维和结构风险最小化的理论基础上发展而来。本文将探讨几种不同的SVM方法及其优化策略,旨在提高模型的效率和适用性。 ... [详细]
  • 高级聚类技术解析
    本文探讨了基于概率模型的聚类方法,包括模糊聚类、单变量高斯混合模型及其EM算法的应用。同时,深入分析了图和网络数据中的聚类技术,如通过计算离心率、半径、直径等参数来评估节点的重要性,并介绍了SCAN算法在结构化数据聚类中的应用。 ... [详细]
  • 探索正弦曲面与粽子曲面的数学之美
    正弦曲面(SineSurface)是一种独特的三维几何结构,不同于常见的正弦曲线。本文将探讨这种曲面的生成原理及其与罗马曲面的对比,并介绍如何通过自定义脚本代码生成这些复杂的数学图形。 ... [详细]
  • 前端开发中的代码注释实践与规范
    本文探讨了前端开发过程中代码注释的重要性,不仅有助于个人清晰地回顾自己的编程思路,还能促进团队成员之间的有效沟通。文章将详细介绍HTML、CSS及JavaScript中的注释使用方法,并提出一套实用的注释规范。 ... [详细]
  • 在Python编程学习过程中,许多初学者常遇到各种功能实现难题。虽然这些问题往往并不复杂,但找到高效解决方案却能显著提升编程效率。本文将介绍一个名为‘30-seconds-of-python’的优质资源,帮助大家快速掌握实用的Python技巧。 ... [详细]
  • 本文详细探讨了内部网关协议(IGP)中的三种主要协议——RIP、OSPF和ISIS的特点、优势及应用场景。 ... [详细]
  • 本文介绍了一种通过 jQuery 将视窗单位(如 vh 和 vw)转换为实际像素值的方法,适用于需要动态调整元素尺寸的网页开发。 ... [详细]
  • 本文深入探讨Java编程语言的关键特性,包括但不限于其简洁性、强大的面向对象能力、跨平台兼容性、安全机制、高效性能及多线程支持等方面。文章旨在为开发者提供全面理解Java特性的指导。 ... [详细]
  • 本文探讨了实时操作系统中的两种主要调度策略——速率单调调度与最早期限优先调度,并深入分析了多处理器环境下的调度挑战及优先级反转问题的解决方案。 ... [详细]
  • 首先我是刚接触JAVA,为了学JAVA,我在自己买了一本《精通Java-JDK、数据库系统开发、Web开发》王晓悦编著。书的内容我已经看完了,代码也亲自敲了一遍。但是还是觉得深入不进去,下一步在看什么 ... [详细]
author-avatar
lixinglon257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有