Welcome 微信登录

首页 / 数据库 / MySQL

探索执行计划中filter的原理

探索执行计划中filter的原理

之前写过一篇文章,filter造成的性能问题,开头是这么写的:filter这个词总让人很费解,它下一级可以挂 一个子节点,二个子节点,三个子节点...。挂一个子节点意思过滤,如对全表进行扫描后,按照条件过滤,丢弃不满足条件的数据。挂二个子节点类似是nest loop。挂三个子节点类似1和2做nest loop,结果集再与3做nest loop(这个是我推测的)。为了证明当时的观点,我们下面来做个试验:filter下挂一个节点:挂一个节点时,下面的例子可以看...
排序合并连接(sort merge join)的原理

排序合并连接(sort merge join)的原理

这三类表连接方式是Oracle最基本的连接方式:嵌套循环连接(nested loops join)原理 哈希连接(hash join) 原理 排序合并连接(sort merge join)访问次数:两张表都只会访问0次或1次。驱动表是否有顺序:无。是否要排序:是。应用场景:当结果集已经排过序。排序合并连接原理:如果A表的数据为(2,1,4,5,2),B表的数据为(2,2,1,3,1) ,首先将A表和B表全扫描后排序,如下:A B1 12 12 24 25 ...
嵌套循环连接(nested loops join)原理

嵌套循环连接(nested loops join)原理

这三类表连接方式是Oracle最基本的连接方式:哈希连接(hash join) 原理 排序合并连接(sort merge join)的原理 嵌套循环连接(nested loops join)访问次数:驱动表返回几条,被驱动表访问多少次。驱动表是否有顺序:有。是否要排序:否。应用场景: 1.关联中有一个表比较小;2.被关联表的关联字段上有索引;3.索引的键值不应该重复率很高。如果你做过开发,就把它看成两层嵌套的for循环。下面我们来做个实验:SQL> ...
哈希连接(hash join) 原理

哈希连接(hash join) 原理

这三类表连接方式是Oracle最基本的连接方式:嵌套循环连接(nested loops join)原理 排序合并连接(sort merge join)的原理 哈希连接(hashjoin)访问次数:驱动表和被驱动表都只会访问0次或1次。驱动表是否有顺序:有。是否要排序:否。应用场景: 1. 一个大表,一个小表的关联;2. 表上没有索引;3. 返回结果集比较大。原理我们说的简单一点,先把驱动表的关联字段hash到PGA中(当然rowid也在PGA中),然后扫描...
Oracle Update执行计划原理解析与优化

Oracle Update执行计划原理解析与优化

当使用update,大多数情况下只有一个子节点,只有当set子句中使用子查询时,它才能有两个以上的节点,如果它只有一个节点的情况下,类似于过滤操作(探索执行计划中filter的原理),如下试验所示,步骤2首先扫描一次,当步骤2每返回一条数据步骤3、4、5都扫描一次,所以步骤3、4、5扫描了999次。当update下面有多个节点时,大家可以看到相当于是多个nestedloop(嵌套循环连接(nested loops join)原理),如果你操作的数据量大,则...
各种TNS报错总结--监听器及tnsnames.ora配置文件各种出错总结

各种TNS报错总结--监听器及tnsnames.ora配置文件各种出错总结

本地命名的配置:.本地名可以用简单的名称访问到所需的数据库或服务器所需的信息,而这些信息保存到了tnsnames.ora中.LOCALNAME: 本地名称ADDRESS: 服务器地址PROTOCOL: 使用协议HOST: IP地址PORT: 监听端口SERVICE_NAME: 数据库服务名称首先要保证tnsnames.ora文件中的格式正确,如=号、空格、括号之类基本格式不出错这个可以参考我的一篇tnsnames.ora各种模板:http://blog.c...
归档模式下,使用RMAN的同一备份两次用于不完全恢复

归档模式下,使用RMAN的同一备份两次用于不完全恢复

实验理论基础:SCN的序列的递增性不随数据库的任何操作而改变,即使是RESETLOGS也如此。RESETLOGS清除所有联机日志文件中未应用的重做记录,RESETLOGS只重置日志文件的序列号为1,但对SCN无影响,SCN仍按原序列递增。在控制文件中保存resetlogs SCN和计数器,以便唯一地标识用RESETLOGS选项执行的每一次打开数据库的操作。这个值被写进每个数据文件头以及重做日志文件。如果重做日志文件的日志序列号与Oracle的要求值不相符,...
无法成功执行catalog.sql,ORA-04045 ORA-04064

无法成功执行catalog.sql,ORA-04045 ORA-04064

最近同事报料,数据库无法执行一些关于数据字典的查询。即使是查询dba_users都会出现错误。从错误日志来看,全部是数据字典的一些错误信息,而用户数据还是ok的。Google了一下,看了看metalink,需要重建数据字典。那就执行catalog.sql吧。晕,竟然连执行这个SQL语句都报错!数据没有备份呢,汗!!! 如果你也是无法成功执行catalog.sql,接着往下看。一、故障现象--后台alert log日志出现大量的ORA-00604,ORA-0...
Oracle 闪回区(Oracle Flash recovery area)

Oracle 闪回区(Oracle Flash recovery area)

Oracle闪回区已经有了好几载的岁月了,在10g的时候就被推出一直延续到现在。Oracle闪回区是为RMAN准备的,尽管抛开它我们可以同样完成数据库备份恢复的相关工作,Oracle依旧强烈推荐使用且它让其成为RMAN的组件之一。这是因为该区域可集中简化管理所有和备份恢复工作,这也是其魅力所在。本文描述了Oracle闪回区的特性及其配置闪回区,监控闪回区等。1、闪回区特性及其配置闪回区 就是分配一个特定的目录位置(普通磁盘上的目录或ASM磁盘)来存放一些特...
Oracle OMF 功能详解

Oracle OMF 功能详解

OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件。OMF支持下列文件的自动管理: 表空间 日志文件(联机) 控制文件前提条件:需要为这些类型文件设定相关参数。一.数据文件的OMF管理 数据文件管理参数:db_create_file_d...
Hive中表的关联顺序对生成MapReduce作业数的影响案例

Hive中表的关联顺序对生成MapReduce作业数的影响案例

Hive中在做多表关联时,由于Hive的SQL优化引擎还不够强大,表的关联顺序不同往往导致产生不同数量的MapReduce作业数。这时就需要通过分析执行计划对SQL进行调整,以获得最少的MapReduce作业数。举一个例子(案例基于Hive 0.6.0):create table ljn1(k1 bigint,k2 String,v1 int);create table ljn2(k1 bigint,v2 int);create table ljn3(k1...
<< 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 >>