oracle总共只有两种基本的数据访问途径:全扫描或者索引扫描
。
统计信息在优化器准备确定最优方法的过程中扮演了关键的角色。
当对一个对象进行全扫描时,与该对象相关的所有数据块都必须取出并进行处理,以确定块中所包含的数据行是否是你的查询所需要的。请记住ORACLE必须将整个数据块读取到内存中以取得这个块中所存储的数据行的数据。因此,当发生全扫描时,实际上优化器需要考虑两件事:必须读取多少数据块以及每个数据块中有多少数据将被舍弃。
基于数据存储方式的不同,优化器的执行计划选择也可能会不同。
请记住,全扫描是否为高效的选择,取决于需要访问的数据块个数以及最终的结果集行数。数据的存储方式在决策过程中扮演了重要的角色。此外,全扫描是否为高效选择的另一个关键因素是舍弃。所访问数据块数目以及舍弃的数量越大,全表扫描的成本也就越高。
随着时间的推移,新的行被插入到表中使得表变得更大,舍弃这么多数据行的成本也不断增加,到一定程度时优化器将会切换到使用索引扫描运算。优化器决定进行切换的点并不一定是你实现最佳性能的点。你可以通过使用提示来强制优化器使用索引,以测试在哪个点上使用索引更有意义。
全扫描运算将会进行多块读取。也就是说一个单独的IO调用将会请求多个块而不仅仅是一个。所请求的数据块数目是可变的,实际上可以是从一个到db_file_multiblock_read_count参数所指定的数目范围之间的任意个。例如,如果这个参数设定为16,而表中有160个块,可以只通过10次调用就可以获取所有的数据块。
关于全表扫描需要注意的最后一点,当对扫描进行多块读取调用时,ORACLE将最多读取到位于表中高水位线的数据块。高水位线标出了最后一块有数据写入的数据块。即使几乎所有数据行都被删除了并且一些块实际上已经完全变成空的了,高水位线还是保持不变。当进行全扫描运算的时候,到高水位线为止的所有数据块都将被读取并扫描,即使它们是空的。这就意味着许多实际上不需要读取的空数据块也被读取了。
分享到:
相关推荐
在企业信息化管理中,Oracle数据库的优化及异常数据处理是保证业务系统稳定运行的关键因素之一。本篇文档详细介绍了SQL优化的本质、途径以及异常数据处理的方法,对于从事Oracle数据库管理的工程师来说,具有较高的...
海量数据处理的核心在于高效的数据存储和快速的数据访问。对于Oracle数据库而言,这通常涉及到表空间设计、索引结构、分区策略以及数据压缩技术的应用。例如,合理地使用分区可以将大表分割成更小、更易管理的部分,...
### Oracle查询优化4大方面的主要途径 在Oracle数据库管理中,查询优化是提高数据库性能的关键环节之一。本文将从四个方面详细介绍Oracle查询优化的主要途径:缓存管理、内存管理、索引管理和连接策略优化。 #### ...
通过合理选择优化器模式、利用高效的数据访问方式以及充分利用SQL语句共享机制,可以显著提升Oracle数据库的性能。此外,注意细节如绑定变量的一致性、对象的统一命名等也是优化查询性能的重要因素。希望以上内容对...
在数据库中,索引类似于书籍的目录,它为数据提供快速访问的途径。Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引和唯一索引等。其中,B树索引是最常见的一种,它通过分层结构快速定位数据行。位图索引...
Oracle实例是指运行在计算机上的软件环境,它是访问Oracle数据库的途径。一个实例只能打开一个数据库,并由共享全局区(SGA)和一组后台进程组成。 - **SGA**:是Oracle实例的内存区域,用于存储共享数据和控制信息...
然而,对于大数据量的表,全表扫描可能导致高延迟和资源消耗。 2. **基于ROWID的访问**:ROWID是一种特殊的键,它包含了行在物理存储中的地址。通过索引访问ROWID,可以快速定位到特定行,从而显著提高查询效率。...
索引通过预排序的键值来提供快速的查找途径,避免了全表扫描的低效。本篇内容将深入解析Oracle索引的基本概念、原理以及类型。 首先,索引是可选的表对象,其主要目的是提升查询速度。尽管索引可以显著提高数据检索...
2. 避免全表扫描:尽可能利用索引,减少对整个表的扫描。 3. 选择合适的JOIN类型:根据数据分布和查询需求选择INNER JOIN、OUTER JOIN或UNION。 4. 使用EXPLAIN PLAN:分析查询执行计划,找出可能的性能瓶颈。 四、...
源代码级别的理解可以帮助我们定位问题代码段,并通过调整SQL查询、优化索引或者改进数据访问模式来提高程序的运行速度。 总结来说,Oracle扩展SQL跟踪数据是数据库性能优化的重要工具,它提供了一种直接且有效的...
3. Oracle远程访问MySQL:Oracle数据库用户有时需要从Oracle远程连接到MySQL数据库,这通常涉及到跨数据库的数据迁移、查询等操作。实现该功能可能需要使用数据库链接(database link)或中间件。 4. 分布式数据库...
Oracle性能优化是一个涉及多方面策略和...综上所述,Oracle性能优化需要综合考虑查询执行策略、数据访问方式、内存管理、索引策略等多个层面。理解并熟练应用这些技术,可以显著提升Oracle数据库的运行效率和用户体验。
- 索引组织表:使用IOT(Index-Organized Table)可以减少查询时的数据访问量。 4. **系统级调优**: - I/O子系统优化:优化磁盘阵列配置、RAID级别选择等,以提高I/O性能。 - CPU和内存优化:根据应用需求合理...
三、Oracle数据存储 1. 数据文件(Data File):实际存储数据库数据的物理文件,每个表空间由一个或多个数据文件组成。 2. 表空间(Tablespace):逻辑存储单位,包含一个或多个数据文件,用于组织数据库对象。 3. ...
1. SQL优化:通过EXPLAIN PLAN分析查询执行计划,使用绑定变量,避免全表扫描等。 2. Indexing策略:合理创建索引以提高查询性能。 3. SQL Tuning Advisor:Oracle提供的自动SQL调优工具。 4. Memory管理:理解SGA...
- **介绍**:Oracle9i RAC是一种集群技术,允许多个实例同时访问相同的数据库。 - **优势**:提高了系统的可用性和负载均衡能力,适用于需要高可用性和高性能的环境。 #### 四、安全性增强 Oracle9i在安全性方面也...