`
core_qq
  • 浏览: 15923 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL语句的执行过程

 
阅读更多

    服务器接收到SQL语句之后,要经过如下步骤完成操作:Parse(解析)—> Bind(绑定)—> Execute(执行)。

    画个流程图比较明显的表示了这些过程:

    绘图1

    下面说明执行的具体细节: 
    1 Select(查询)

    绘图1

 

    2 INSERT/DELETE/UPDATE

    这些都是对数据进行修改的语句,画个流程图,简洁明了:

    绘图3

       这个叙述比较混乱,举个例子:
    有这样一行,学生id是100,成绩是99,现在要将这个成绩改成80(这个ID对应的行,有且仅有一行)。
    SQL应该是update student set score=80 where stu_id = 100;
    假设这个数据块已经在buffer cache里了,那么就要首先取得两个锁:表的数据行独占锁和数据行独占锁。下面,就要把记录为99的数据Redo Entry复制到log buffer。然后,会产生undo block,大概是这样的(100,99)。这之后,会把修改的Redo Entry也复制到log buffer里去,这个是80的。所有这些做完以后,成绩会被从99更新到80。
     这一切之后,输入commit。
     这时数据库会做这些事情:
     1 会把commit的Redo Entry复制到Log Buffer里,这样的话,按照时间顺序,Log Buffer里就有了如下三组:(100,99),(100,80),commit。
     2 启动LGWR。按照上面的顺序把Log Buffer写到Online Logfile里。
     3 告诉用户进程,结束了。
     很长时间以来,我都以为commit以后,数据会被写到数据文件里,就是Datafile,但是事实不是这样。上面的步骤完成之后Datafile里存在的还是(100,99)。下次再查询的时候,就直接查缓冲区数据了。如果缓冲区紧张了,DBWR会开始工作,将缓冲刷进数据文件。

分享到:
评论

相关推荐

    SQL语句执行过程详解

    SQL语句执行过程是一个涉及到客户端与服务器端交互、多个阶段的复杂过程,包含了对SQL语句的处理、解析、优化以及最终的执行。这个过程对于数据库管理员来说,需要对数据库内部结构有深入的了解,才能够完全掌握。 ...

    oracle sql语句执行流程解析

    执行过程中,服务器会对数据进行查询和处理,然后返回结果给客户端。在执行完SQL语句之后,如果该语句将会被再次执行,那么其执行计划可能会被保存到数据高速缓存中,以便下次可以直接使用,省略语法、语义和权限...

    SQL语句的执行过程.pptx

    分析步骤是SQL语句执行过程的第一步。在这个步骤中,数据库系统会对提交的SQL语句进行语法和语义检查,以确定该语句是否合法。如果该语句是合法的,数据库系统还需要检查是否具有访问权限、访问的列是否在所访问的表...

    完成超长SQL语句执行前拆分

    ### 完成超长SQL语句执行前拆分 #### 概述 在使用Visual Basic (简称VB)进行数据库操作时,可能会遇到因为SQL语句过长而导致无法正常执行的问题。这种情况下,即使该SQL语句可以在SQL Server的查询分析器中成功运行...

    Oracle中SQL语句执行效率的查找与解决

    本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...

    存储过程中怎么动态执行sql语句

    “存储过程中怎么动态执行SQL语句”这一标题表明文章将介绍如何在Oracle数据库的存储过程中编写能够动态执行的SQL语句。动态SQL是指在运行时才能确定其具体内容的SQL语句,它允许用户根据不同的条件构造不同的查询或...

    NC后台sql语句执行的方式

    ### NC后台SQL语句执行方式详解 在NC系统中,SQL语句的执行是系统管理和数据操作的关键环节之一。根据给定的文件信息,本文将详细介绍三种不同的SQL执行方式及其应用场景,帮助读者更好地理解NC后台如何高效地处理...

    SQL语句执行器

    SQL语句执行器是一款专为初学者和数据库管理员设计的在线工具,允许用户在网站后台直接输入并执行SQL(Structured Query Language)语句,以便于查询、管理以及操作数据库。这款程序极大地简化了数据库交互的过程,...

    浅谈从SQL语句执行过程优化ORACLE数据库.pdf

    浅谈从SQL语句执行过程优化ORACLE数据库.pdf

    oracle监听执行sql语句

    在Oracle数据库管理与维护过程中,有时候我们需要了解应用程序正在执行哪些SQL语句,这不仅有助于性能优化,还可以帮助我们诊断潜在的问题。通过监听执行SQL语句的方式,我们可以获取到当前会话正在执行的具体SQL...

    SQL语句执行顺序说明

    ### SQL语句执行顺序说明 #### 一、SQL语句准备执行阶段 当SQL语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:...

    SQL 语句执行步骤

    ### SQL语句执行步骤 #### 一、引言 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准语言。为了更好地理解和优化SQL查询过程,深入研究其内部执行机制至关重要。本文将详细介绍SQL语句...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...

    SQL Server 2005 定时执行SQL语句的方法

    SQL SERVER 2005有定时任务,你可以启动一下。不过要想更加直观的控制,直接写一个程序,定时执行你的存储过程...“步骤” — 设置步骤名称 — “类型”T-SQL — 选择数据库 — “命令”输入SQL语句 “计划” — “新建

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

    Row Source则表示SQL执行过程中的数据源,它可以是表、视图、索引或者其他数据源。理解Row Source对于分析SQL执行路径至关重要。Driving Table是查询中驱动整个连接操作的表,它的选择直接影响到查询效率。Probed ...

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    SQL 执行超长语句

    本文将围绕“SQL执行超长语句”这一主题进行深入探讨,包括超长语句可能出现的原因、如何编写更加高效合理的超长SQL语句以及如何优化执行性能等方面。 #### 一、超长SQL语句的定义与常见场景 ##### 定义 超长SQL...

    如何获得PreparedStatement最终执行的sql语句

    总的来说,获取`PreparedStatement`最终执行的SQL语句是一个涉及到源码阅读、日志配置、工具利用或自定义代理类的过程。这个过程可以帮助开发者更好地理解和调试与数据库相关的代码,提高问题定位的效率。

Global site tag (gtag.js) - Google Analytics