首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL何在数据库执行

数据库的服务端,可分为执行器(Execution Engine) 和 存储引擎(Storage Engine) 两部分: 执行器负责解析SQL执行查询 存储引擎负责保存数据 1 SQL何在执行执行...user表1,000条数据,订单表10,000条数据,JOIN要遍历行数1,000 x 10,000 = 10,000,000行 这种从SQL的AST直译过来的逻辑执行计划,一般性能差,所以,要对执行计划优化...到这,执行器只在逻辑层分析SQL,优化查询执行逻辑,执行计划操作的数据,仍是表、行和列。在数据库,表、行、列都是逻辑概念,所以,这个执行计划叫“逻辑执行计划”。...执行查询接下来的部分,涉及数据库的物理存储结构。 2 SQL是如何在存储引擎执行 数据真正存储时,无论在磁盘or内存,都没法直接存储这种带行列的二维表。...总结 一条SQL在数据库执行,经过语法解析成AST,然后AST转换为逻辑执行计划,逻辑执行计划经优化后,转换为物理执行计划,再经物理执行计划优化后,按照优化后的物理执行计划执行完成数据的查询。

3.1K60
您找到你想要的搜索结果了吗?
是的
没有找到

【DB笔试面试511】如何在Oracle写操作系统文件,写日志?

题目部分 如何在Oracle写操作系统文件,写日志? 答案部分 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...可以执行$ORACLE_HOME/rdbms/admin/dbmslock.sql来创建DBMS_LOCK包,该包可以实现让程序暂时等待的功能。...在CLIENT_INFO列存放程序的客户端信息;MODULE列存放主程序名,包的名称;ACTION列存放程序包的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。...如何在Oracle写操作系统文件,写日志? 可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。...所以,从Oracle 10g开始Oracle支持记录DML语句的错误,而允许语句自动继续执行。这个功能可以使用DBMS_ERRLOG包实现。

28.8K30

走进黑盒:SQL是如何在数据库执行的?

SQL是如何在执行执行的 ? 我们通过一个例子来看一下,执行器是如何来解析执行一条 SQL 的。...上面这个 SQL,它的 AST 大概是这样的: ? 这个树太复杂,我只画了主要的部分,你大致看一下,能理解这个 SQL 的语法树长什么样就行了。执行器解析这个 AST 之后,会生成一个逻辑执行计划。...到这里,执行器只是在逻辑层面分析 SQL,优化查询的执行逻辑,我们执行计划操作的数据,仍然是表、行和列。在数据库,表、行、列都是逻辑概念,所以,这个执行计划叫“逻辑执行计划”。...执行查询接下来的部分,就需要涉及到数据库的物理存储结构了。 SQL是如何存在存储引擎执行的? 数据真正存储的时候,无论在磁盘里,还是在内存,都没法直接存储这种带有行列的二维表。...理解数据库执行 SQL 的过程,以及不同存储引擎的数据和索引的物理存储结构,对于正确使用和优化 SQL 非常有帮助: 为什么主键不能太长?

1.9K30

走进黑盒:SQL是如何在数据库执行的?

SQL是如何在执行执行的 ? 我们通过一个例子来看一下,执行器是如何来解析执行一条 SQL 的。...上面这个 SQL,它的 AST 大概是这样的: 这个树太复杂,我只画了主要的部分,你大致看一下,能理解这个 SQL 的语法树长什么样就行了。执行器解析这个 AST 之后,会生成一个逻辑执行计划。...到这里,执行器只是在逻辑层面分析 SQL,优化查询的执行逻辑,我们执行计划操作的数据,仍然是表、行和列。在数据库,表、行、列都是逻辑概念,所以,这个执行计划叫“逻辑执行计划”。...执行查询接下来的部分,就需要涉及到数据库的物理存储结构了。 SQL是如何存在存储引擎执行的? 数据真正存储的时候,无论在磁盘里,还是在内存,都没法直接存储这种带有行列的二维表。...理解数据库执行 SQL 的过程,以及不同存储引擎的数据和索引的物理存储结构,对于正确使用和优化 SQL 非常有帮助: 为什么主键不能太长?

1.6K10

【DB笔试面试575】在OracleSQL语句的执行过程有哪些?

♣ 题目部分 在OracleSQL语句的执行过程有哪些? ♣ 答案部分 Oracle数据库里SQL语句的执行过程可以如下图所示: ?...在这个过程Oracle会先执行对目标SQL的语法、语义和权限的检查: ① 语法检查(Syntax Check)是检查目标SQL的拼写是否正确,例如错将关键字“FROM”写成“FORM”,将“SELECT...如果找到了匹配的共享游标,那么Oracle就会把存储于该共享游标的解析树和执行计划直接拿过来重用,这相当于跳过了后续的“查询转换”和“查询优化”这两个步骤,直接进入到“实际执行”阶段。...在查询转换过程Oracle会根据一些规则来决定是否对目标SQL执行查询转换,这些规则在Oracle不同的版本里不尽相同。...(5)在得到了目标SQL执行计划后,接下来Oracle就会根据执行计划去实际执行SQL,并将执行结果返回给用户。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

1.4K10

【DB笔试面试603】在Oracle,固定SQL执行计划的方法有哪些?

♣ 题目部分 在Oracle,固定SQL执行计划的方法有哪些?...♣ 答案部分 在实际项目中,通常在开发环境下,一些SQL执行没有任何功能问题,而当到了生产环境或生产环境的数据量发生较大的变量时,其SQL执行效率非常低。...因为在SQL语句的执行计划发生更改时,可能存在性能风险。SQL计划发生更改的原因有很多,优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和SQL概要文件创建等。...有4种方式可以固定和控制执行计划,分别是使用Hint(提示)、OUTLINE(存储概要)、SQL PROFILE(SQL概要文件)和SPM(SQL Plan Management,SQL计划管理),如下表所示...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

68820

【DB笔试面试584】在Oracle,如何得到已执行的目标SQL的绑定变量的值?

♣ 题目部分 在Oracle,如何得到已执行的目标SQL的绑定变量的值?...♣ 答案部分 当Oracle解析和执行含有绑定变量的目标SQL时,如果满足如下两个条件之一,那么该SQL的绑定变量的具体输入值就会被Oracle捕获: l 当含有绑定变量的目标SQL以硬解析的方式被执行时...l 当含有绑定变量的目标SQL以软解析或软软解析的方式重复执行时,Oracle在默认情况下至少得间隔15分钟才会捕获一次。...只会捕获那些位于目标SQL的WHERE条件的绑定变量的具体输入值,而对于那些使用了绑定变量的INSERT语句,不管该INSERT语句是否是以硬解析的方式执行Oracle始终不会捕获INSERT语句的...查询视图V$SQL_BIND_CAPTURE或V$SQL可以得到已执行目标SQL绑定变量的具体输入值。

3K40

PLSQL基础语法

但如果是在MYSQL/SQLSERVER数据库,那PL/SQL就无法使用(PL/SQL是属于Oracle的过程查询语言)。..., VCHAR, LONG, DATE, TIMESTAMP)之外,还可以直接将数据库某个字段的类型作为变量的类型,: v_productid productinfo.productid%TYPE;...--SQL when '3' then --SQL end case; END; 运行可以发现,t_plsql_test表id为3的记录的name字段已经改变。...END; Oracle的异常可以分为三类: ①预定义异常; ②非预定义异常; ③自定义异常。 其中预定义异常是指Oracle已定义好的异常,我们可以直接调用,常用的预定义异常有: ?...一般情况下,我们可以在存储过程的异常处理模块中将出错的信息保存到特定的系统表,这样我们就可以根据日志记录得知执行的错误。

2.5K110

【DB笔试面试602】在Oracle,如何从执行计划初步判断SQL的性能问题?

♣ 题目部分 在Oracle,如何从执行计划初步判断SQL的性能问题?...♣ 答案部分 从以下几点去考虑: l 执行计划关注点 l 预估返回行数 l 真实返回行与逻辑读比率 l 预估行数和真实返回行数的差异 l Predicate Information部分是否有隐式类型转换...此外,还有一些其它需要注意的地方,例如COST花费特别大的步骤、全表扫描的步骤、FILTER的操作等等,都是需要特别关注的地方,这里就不详细列举了,总之,看执行计划和看AWR报告一样,需要具有一双敏锐的鹰眼...,最主要的是找出SQL的性能瓶颈。...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

83320

SQL技能】SQL技能对于ETL开发人员的重要性

我最初是一个Oracle开发者,我喜欢它的结构化查询语言,一年后,我意识到SQL并非Oracle的专有。...ANSI-SQL标准几乎被所有主流关系型数据库所接受,Oracle,DB2 和SQL Server,当客户决定从一个数据库迁移到另一个时,它极大地提高了可移植性。...在接触ETL工具前,将近五年的时间我都在创建复杂的Oracle程序语言/SQL代码。作为SQL专家,我最初的ETL路线图是:源结构-复 杂SQL-目标,所有复杂的转换逻辑都是用SQL写的。...应用数据库端的SQL特性可以完成很多复杂的转换,比如“CASE”语句,它可以完成“If ,Else if, 和 Else ”的逻辑。我使用该特性在数据库端创建了很多复杂的转换逻辑。...团队 中出这个主意的人具有良好的SQL知识并知道如何在SQL中使用hint。 虽然具有如上好处,我仍然要提出在ETL中使用复杂SQL 所带来的问题。

2K90

SQL优化案例-改变那些CBO无能为力的执行计划

用户写的sqlOracle会进行等价改写,即使是RBO优化模式,Oracle也会给你做一些转换,这些转化都是基于一种固定的算法,oracle称这种转换是“启发式”的。...当Oracle没办法做transformation的时候,可能就是sql产生问题的时候,此时就要我们去找原因了,下面通过一些案例,说明这种优化器无能为力的情况(为了保护客户的隐私,表名和部分列已经重命名...using ACCT_S_BK B on (A.ACCT_ID = B.ACCT_ID) when matched then update set a.ACCT_SKID = B.ACCT_SKID; 实际执行...下面通过sql改写,来让sql执行计划被我们所控制。...执行计划如下,并且NB_XXXXXXXX表只扫描一次,逻辑读由84M+18M降为126,执行时间也降为秒级(当然下面的数据因多次执行已经在buffer)。

97470

【数据库_06】Oracle

Oracle体系结构 ① 数据库 指数据库的物理存储,oracle看作一个超大数据库。 ② 实例 一个实例有一系列的进程,数据库可以有多个实例,但一般只运行一个。...③ 用户 mysql说xx数据库中有n张表,oracle说xx用户下有n张表 ④ 表空间 是一个逻辑映射,一个数据文件只能属于一个表空间 ⑤ 数据文件 存储在表空间的物理存储单位...case '不及格' end from emp; //Oracle特有 select ename, decode( i, 'Y' '及格',...1.单列索引 - create index index_ename on emp(ename) - 单列索引触发条件为,必须是索引列的原始值 - : select * from emp where...存储过程 将一组完成特定功能的SQL语句集。经过编译后存储到数据库

93130

PLSQL编程基础简介及实践

2、 PL/SQL类别:数据库引擎、工具引擎(嵌入到其他语言:C、JAVA)。 3、 PL/SQL包括:编程结构、语法和逻辑机制,工具引擎还增加了支持(ORACLE Forms)的句法。...2、 运行的方式: PL/SQL可在SQL*PLUS、高级语言、 ORACLE开发工具中使用(SQL Developer或Procedure Builder等。...3、运行的过程: PL/SQL程序的运行是通过Oracle的一个引擎来进行的。这个引擎可能在Oracle服务器端,也可能在 Oracle 客户端。...引擎执行PL/SQL的过程性语句,然后将SQL语句发送给数据库服务器来执行,再将结果返回给执行端。 5、语法结构 1、PL/SQL组成:由3部分组成:声明部分、执行部分、异常处理部分。...when 表达式结果n then 语句n  [else 语句] end case; case when语句示例 select trunc(tur.created_date, 'dd'),  count(

1.4K20
领券