oracle 数据库sql调优

合集下载

oracle sql 优化技巧

oracle sql 优化技巧

oracle sql 优化技巧(实用版3篇)目录(篇1)1.Oracle SQL 简介2.优化技巧2.1 减少访问数据库次数2.2 选择最有效率的表名顺序2.3 避免使用 SELECT2.4 利用 DECODE 函数2.5 设置 ARRAYSIZE 参数2.6 使用 TRUNCATE 替代 DELETE2.7 多使用 COMMIT 命令2.8 合理使用索引正文(篇1)Oracle SQL 是一款广泛应用于各类大、中、小微机环境的高效、可靠的关系数据库管理系统。

为了提高 Oracle SQL 的性能,本文将为您介绍一些优化技巧。

首先,减少访问数据库的次数是最基本的优化方法。

Oracle 在内部执行了许多工作,如解析 SQL 语句、估算索引的利用率、读数据块等,这些都会大量耗费 Oracle 数据库的运行。

因此,尽量减少访问数据库的次数,可以有效提高系统性能。

其次,选择最有效率的表名顺序也可以明显提升 Oracle 的性能。

Oracle 解析器是按照从右到左的顺序处理 FROM 子句中的表名,因此,合理安排表名顺序,可以减少解析时间,提高查询效率。

在执行 SELECT 子句时,应尽量避免使用,因为 Oracle 在解析的过程中,会将依次转换成列名,这是通过查询数据字典完成的,耗费时间较长。

DECODE 函数也是一个很好的优化工具,它可以避免重复扫描相同记录,或者重复连接相同的表,提高查询效率。

在 SQLPlus 和 SQLForms 以及 ProC 中,可以重新设置 ARRAYSIZE 参数。

该参数可以明显增加每次数据库访问时的检索数据量,从而提高系统性能。

建议将该参数设置为 200。

当需要删除数据时,尽量使用 TRUNCATE 语句替代 DELETE 语句。

执行 TRUNCATE 命令时,回滚段不会存放任何可被恢复的信息,所有数据不能被恢复。

因此,TRUNCATE 命令执行时间短,且资源消耗少。

在使用 Oracle 时,尽量多使用 COMMIT 命令。

浅谈Oracle数据库SQL性能优化

浅谈Oracle数据库SQL性能优化

千里之行,始于足下。

浅谈Oracle数据库SQL性能优化
SQL性能优化在Oracle数据库中是非常重要的,并且是一个复杂而繁琐的过程。

下面是一些常见的SQL性能优化技巧。

1. 使用正确的索引:索引是加快查询速度的重要因素。

确保表中的列被正确索引,以便Oracle能够快速定位所需的数据。

2. 优化查询语句:编写高效的查询语句是提高性能的关键,避免使用大量的子查询、联合查询以及不必要的计算。

3. 提高表的设计:优化表的结构和设计,包括拆分表、合并表、垂直分区和水平分区等。

4. 使用合适的数据类型:使用合适的数据类型可以节省存储空间和提高查询效率。

5. 避免使用全表扫描:全表扫描是一种费时的操作,尽量避免使用它,使用索引或其他技术来提高查询效率。

6. 分析并优化执行计划:使用Oracle的性能分析工具来分析查询执行计划,找出慢查询的原因,并优化查询的执行计划。

7. 优化硬件和服务器配置:提高服务器的性能,如增加内存、优化磁盘和网络等。

8. 定期收集统计信息:定期收集表和索引的统计信息,以便Oracle优化查询的执行计划。

第1页/共2页
锲而不舍,金石可镂。

9. 使用缓存和预编译:使用数据库缓存和预编译技术来提高查询速度。

10. 并发控制:合理设计并发控制机制,避免不必要的锁和死锁,提高查询和更新的并发性能。

总之,SQL性能优化是一个综合性工作,需要深入了解Oracle数据库的架构和原理,并结合具体的业务场景进行优化。

通过合理的索引设计、优化查询语句、优化表设计以及优化硬件和服务器配置等手段,可以大大提高Oracle数据库的性能。

oracle的sql优化

oracle的sql优化

Oracle SQL 优化Oracle SQL 优化是指通过使用各种技术来提高 Oracle SQL 查询的性能。

这些技术包括:使用索引:索引可以帮助 Oracle 数据库快速找到数据,从而提高查询性能。

使用分区:分区可以将大型表分成更小的部分,从而提高查询性能。

使用物化视图:物化视图是预先计算的查询结果,可以提高查询性能。

使用连接提示:连接提示可以告诉 Oracle 数据库如何连接表,从而提高查询性能。

使用并行查询:并行查询可以同时使用多个处理器来执行查询,从而提高查询性能。

Oracle SQL 优化器 :Oracle SQL 优化器是一个内置的工具,可以帮助用户优化 SQL 查询。

优化器会分析查询并生成一个执行计划,该计划指定了 Oracle 数据库将如何执行查询。

用户可以通过查看执行计划来了解查询的性能瓶颈,并进行相应的优化。

Oracle SQL 优化技巧:使用 EXPLAIN PLAN 命令:EXPLAIN PLAN 命令可以显示查询的执行计划。

使用绑定变量:绑定变量可以防止 SQL 语句在每次执行时都重新编译。

使用批处理:批处理可以将多个 SQL 语句组合成一个批处理作业,从而提高性能。

使用游标:游标可以逐行处理数据,从而提高性能。

使用临时表:临时表可以存储中间结果,从而提高性能。

Oracle SQL 优化工具:Oracle SQL Developer:Oracle SQL Developer 是一个集成开发环境,可以帮助用户开发和优化 SQL 查询。

Oracle Enterprise Manager:Oracle Enterprise Manager 是一个管理工具,可以帮助用户监控和优化 Oracle 数据库。

Oracle SQL Tuning Advisor:Oracle SQL Tuning Advisor 是一个工具,可以帮助用户自动优化 SQL 查询。

Oracle 数据库SQL调优

Oracle 数据库SQL调优
概述
数据库的调优包括多个层面,如:操作系统调优、数据合理有效的存
储、数据库服务器参数调整、应用层调优等 对应用开发层的SQL的调优,是最直接有效的手段,可解决80%以上 对应用开发层的SQL的调优,是最直接有效的手段,可解决80%以上 的数据库访问效率问题 本次培训主要讲述一些书写高效SQL语句常用规则 本次培训主要讲述一些书写高效SQL语句常用规则
规则:总是使用索引的第一个列 规则:
如果索引是建立在多个列上(复合索引), 只有在它的第一个列 如果索引是建立在多个列上(复合索引),
(leading column)被where子句引用时,优化器才会选择使用该索引. column)被where子句引用时,优化器才会选择使用该索引. create table multiindexusage ( inda number , indb number , descr varchar2(10)); create index multindex on multiindexusage(inda,indb); 通过索引扫描: select * from multiindexusage where inda = 1; 全表扫描: select * from multiindexusage where indb = 1;
规则:合理有效的使用索引提高查询效率 规则:
在多数情况下,通过索引提高查询效率是非常有效的办法 索引一定要建的合理,并且被正确的使用 选择合适的索引列规则: 选择在where子句中常用的查询列做索引字段 选择在where子句中常用的查询列做索引字段 选择常用来关联表的字段做索引字段 对普通的B TREE索引,应该选择具有选择性高(high selectivity)的 对普通的B-TREE索引,应该选择具有选择性高(high selectivity)的 字段做索引字段,若字段的不同取值很少,即选择性低,则适合建位 图索引 不要在经常被修改的字段上建索引。索引会降低 update ,insert ,delete等操作的效率。 ,delete等操作的效率。

Oracle sql 性能优化调整

Oracle sql 性能优化调整

Oracle sql 性能优化调整一、前言Oracle SQL是众多企业使用较多的关系型数据库之一,因其高效稳定的性能,以及其提供的强大功能,逐渐成为了广大企业进行信息系统开发、实施和数据管理的首选。

然而,在大数据时代,普通的SQL查询已经不能支撑企业的业务需求,尤其是在数据量庞大的情况下,SQL查询的效率和性能将会受到严重的制约。

本文旨在介绍Oracle SQL的性能优化调整方法,以提高企业的数据处理的效率和性能。

二、排查问题SQL性能优化的第一步是排查问题,需要对慢查询做出明确的定位。

首先需要对SQL进行分析,寻找哪个部分影响了SQL性能,包括:1.查询语句的风格是否规范。

2.SQL语句是否能够使用索引优化查询。

3.数据库的表大小是否合适。

4.缓存的大小是否合适。

5.应用响应时间是否过长。

在分析完成后,才能通过性能优化来解决问题。

三、优化处理1.优化SQL查询语句SQL查询最主要的性能瓶颈是IO瓶颈。

当表的大小超过1万条时,应该对查询语句进行合理的检索,即避免全表扫描。

对大于1万条的表,应该创建索引,以便提高SQL的效率。

2.优化SQL查询计划查询计划优化是SQL调优的关键。

因为优化查询计划是确定整个查询需要的资源和查询的优化路径。

优化查询计划意味着查询应该从哪些索引开始,除了哪些索引以外,以及使用哪些操作符等等。

这些优化计划将明显影响查询性能。

3.优化表结构和索引优化表结构和索引也是常用的Oracle SQL优化方法。

表结构的优化主要是考虑数据库表的设计是否符合0NF、1NF、3NF等规范,是否有多列重复,是否存在无用列,是否存在大型BLOB/CLOB列等问题。

对于索引优化,可以使用多个单列索引代替多列复合索引以提高查询更新效率。

此外,还可以考虑使用等值连接或外连接改变查询本身,以便减少查询的数据量。

4.优化服务器硬件和操作系统软件硬件和操作系统软件的优化也很重要,因为数据库运行的效率和性能取决于服务器硬件和操作系统软件是否能够同时支持PMI和CPU等高性能功能。

oracle数据库sql优化方案

oracle数据库sql优化方案

oracle数据库sql优化方案概述:在使用Oracle数据库进行开发和运维过程中,SQL语句的性能常常是一个关键问题。

本文将介绍一些基本的Oracle数据库SQL优化方案,旨在提高系统查询性能和响应速度。

1. SQL语句优化准则在进行SQL语句的优化之前,我们需要遵循以下准则:- 减少表之间的连接数量,尽量使用JOIN语句而不是子查询。

- 选择恰当的索引,合理利用索引可以提高查询效率。

- 避免使用SELECT *,仅选择需要的列。

- 尽量减少SQL语句中的函数使用,函数会增加查询的开销。

- 针对复杂查询,可以考虑使用分页查询或数据缓存等技术。

2. 查询计划分析查询计划是Oracle数据库优化的重要工具,通过分析查询计划可以找到潜在的性能问题。

可以使用以下工具进行查询计划分析:- 使用EXPLAIN PLAN命令生成查询计划。

- 使用SQL Trace功能记录SQL执行过程,通过跟踪文件进行分析。

- 使用Oracle Enterprise Manager等性能监控工具,查看查询计划和执行统计信息。

3. 索引优化索引是提高查询性能的重要手段,合理使用和优化索引可以显著提升系统的响应速度。

以下是一些索引优化的常用技巧:- 使用唯一索引替代非唯一索引,减少索引的冗余。

- 避免在过大的列上创建索引,可以使用函数索引或局部索引进行优化。

- 对经常用于查询的列创建索引,包括WHERE子句中经常使用的列和经常进行连接的列。

- 定期进行索引重建和统计信息收集。

4. 数据库配置优化除了对SQL语句进行优化,还可以通过调整数据库配置来提升性能:- 合理设置数据库的内存参数,包括共享池大小、缓冲池大小和PGA大小等。

- 设置适当的并发连接数,避免过度连接造成资源浪费。

- 配置硬盘存储方式,使用RAID技术提高数据存取速度。

- 使用数据库分区技术,将大表分成多个子表,提高查询效率。

5. 常见问题处理在优化SQL过程中,经常会遇到一些常见的性能问题,以下是一些处理方式:- 大数据量查询问题:可以考虑分页查询、增加合适的索引或引入缓存等手段来解决。

oracle数据库sql优化

oracle数据库sql优化

千里之行,始于足下。

oracle数据库sql优化Oracle数据库是关系型数据库系统中的一种,在实际应用中,它的性能往往是关键因素之一。

为了提高Oracle数据库的性能,我们可以进行SQL优化。

SQL优化可以减少查询时间、减少资源消耗,提高数据库的整体性能。

首先,我们可以通过索引来优化SQL查询。

索引可以加快数据库的查找速度,减少查询的时间。

在选择索引时,我们可以根据查询的条件和数据的分布情况进行选择,合理选择索引可以大大提高查询效率。

另外,我们还可以考虑使用合适的查询语句。

比如,使用where子句来限制查询的范围,避免全表扫描;使用join来连接多个表,减少查询的次数;使用子查询来优化查询的复杂度等。

此外,在设计数据库时,我们也要考虑到数据的规范化和反规范化。

规范化有助于提高数据的一致性和可维护性,但在查询性能方面可能会受到一定的影响。

因此,对于经常被查询的数据,我们可以考虑进行反规范化,将其冗余存储在多个表中,以提高查询性能。

另外,我们还可以通过设置合适的数据库参数来优化SQL。

比如,通过调整SGA和PGA的大小来合理分配内存资源;通过调整数据库的缓冲池来提高缓存命中率;通过设置合适的日志模式来提高事务处理的效率等。

另外,一个高效的数据库应用还需要考虑到并发访问的问题。

通过合理的数据库设计和应用程序的编写,可以减少多个用户同时访问数据库时的冲突和阻塞,提高并发访问的效率。

第1页/共2页锲而不舍,金石可镂。

总之,通过合理的索引设计、合适的查询语句、数据库参数的优化和并发访问的处理,我们可以大大提高Oracle数据库的性能。

当然,在实际应用中,SQL优化是一个持续的过程,需要不断地进行监控和调整,以保持数据库的高性能。

oracle sql优化常用的15种方法

oracle sql优化常用的15种方法

oracle sql优化常用的15种方法1. 使用合适的索引索引是提高查询性能的重要手段。

在设计表结构时,根据查询需求和数据特点合理地添加索引。

可以通过创建单列索引、复合索引或者位图索引等方式来优化SQL查询。

2. 确保SQL语句逻辑正确SQL语句的逻辑错误可能会导致低效查询。

因此,在编写SQL语句前,需要仔细分析查询条件,确保逻辑正确性。

3. 使用连接替代子查询在一些场景下,使用连接(JOIN)操作可以替代子查询,从而减少查询的复杂度。

连接操作能够将多个数据集合合并为一个结果集,避免多次查询和表的扫描操作。

4. 避免使用通配符查询通配符查询(如LIKE '%value%')在一些情况下可能导致全表扫描,性能低下。

尽量使用前缀匹配(LIKE 'value%')或者使用全文索引进行模糊查询。

5. 注意选择合适的数据类型选择合适的数据类型有助于提高SQL查询的效率。

对于整型数据,尽量使用小范围的数据类型,如TINYINT、SMALLINT等。

对于字符串数据,使用CHAR字段而不是VARCHAR,可以避免存储长度不一致带来的性能问题。

6. 优化查询计划查询计划是数据库在执行SQL查询时生成的执行计划。

通过使用EXPLAIN PLAN命令或者查询计划工具,可以分析查询计划,找出性能瓶颈所在,并对其进行优化。

7. 减少磁盘IO磁盘IO是影响查询性能的重要因素之一。

可以通过增加内存缓存区(如SGA)、使用高速磁盘(如SSD)、使用合适的文件系统(如ASM)等方式来减少磁盘IO。

8. 分区表对于大数据量的表,可以考虑使用分区表进行查询优化。

分区表可以将数据按照某个规则分散到不同的存储区域,从而减少查询范围和加速查询。

9. 批量操作尽量使用批量操作而不是逐条操作,可以减少数据库的事务处理开销,提高SQL执行效率。

可以使用INSERT INTO SELECT、UPDATE、DELETE等批量操作语句来实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle 数据库性能优化(SQL 调优篇)引言对于数据库系统来说,优化是一件非常重要而且烦琐的工作。

通过优化我们可以大大的提高系统运行效率和存储空间的利用率,达到用有限的资源实现一个高效的应用系统;说它烦琐是因为它涉及的面太宽了,从系统的规划、库表的设计、sql 语句的编写、物理设备和网络设备的性能、内存和存储空间的分配等等都影响着系统的性能。

正因为它的烦琐,才给系统优化工作者们提供了一个施展才华的舞台。

对于sql 是一个基础简单却有是较难写好的查询语言,它的好坏直接影响系统的性能;本篇将从sql 查询的内部原理、oracle 数据库服务器是怎么处理sql 的、oracle 数据库sql 优化原则、oracle sql 怎么优化,对于sql 怎样使用就没有作说明。

Sql 查询内部原理查询在处理过程中分为四个大的阶段:将查询转换为内部格式阶段、将内部格式转换为规范格式阶段、为执行选择低层过程阶段、生成并选择最低的查询计划阶段,如图:阶段1:将查询转换为内部格式阶段这一阶段主要是进行语法分析,将原查询转换为数据库内部格式以便于机器处理,不编译 视图处理 翻译 关系代数 表达式 表达式转换代价估算 优化后的代码 执行符合语法规范的报错返回,为sql 优化过程铺平道路。

阶段2:将内部格式转换为规范格式在这一阶段,数据库优化器将执行一系列“保证能够优化”的优化过程,是不会去考虑实际数据的值和数据库的存取路径;优化器将查询的内部表示转换为等价的规范格式。

比如说将“A=B 替换为B=A 或者是p and q 替换为q and p ”,这样做的目的是消除语句表面上的差异,以便能够找到一种在某些方面比原查询更为高效的表示方法。

比如说能够将表达式(A JOIN B)WHERE retriction on A 转为等价高效的表达式(A WHERE restriction on A )JOIN B 。

阶段3:为执行选择低层过程在这一阶段,优化器考虑的是索引、物理存取路径、数据值的分布、数据的物理聚集存储等问题。

基本的策略就是将查询表达式看成一系列的“低层操作”,对于每一个可能的低层操作,都有一组可用的低层过程,而每一个低层过程都会有一个相关的代价计算公式(磁盘i/o 代价,cpu 利用率)。

阶段4:生成并选择最低代价的查询计划这一阶段就是构造一组查询计划,选择一个最优,也就是代价最小的查询计划。

因为每个计划都绑定一系列的低层过程,每一个过程对应查询中的一个低层操作。

优化器此时将所有的过程进行计算,选择一个代价最低的执行。

那么oracle 又是怎么来处理sql 的呢?我们来看看:oracle 分析处理sql 的简单过程oracle 在处理SQL 语句上我们简单的概括为的三个阶段:语法分析、执行、 返回指令(如图)Select 过程:用户select 查询语句发送至server ,server 在共享池进行语法分析和生成执行计划,然后由后台专有server 从磁盘读取数据到data buffer ,并且返回给用户,整个过程如图:解析 S t a t e m e n t O K 执行 提取UPDATE操作过程:为了支持读一致性,恢复和回滚,所有修改操作需要回滚段。

修改操作执行:(1)将数据块送到数据缓冲区(2)将回滚块送到数据缓冲区(3)在修改行上设置行锁(4)保存回滚数据到回滚段块(5)将修改写到数据块Update、select在oracle并行处理:如图Insert 和delete操作和update类似,这里不作论述。

我们在对查询的原理、oracle 内部查询机制作了一些简单讨论后,我们现在开始讨论oracle 的sql优化:oracle sql优化原则Oracle 的SQL 调优是一个非常复杂的主题,可以豪不夸张的说需要一本书的内容来介绍Oracle SQL 调优的细微差别。

不过有一些基本的规则是我们每个开发人员都需要跟从的,这些规则可以改善我们系统的性能。

oracle sql优化的原则是:消除不必要的大表全表搜索、最优的索引使用、最优的JOIN 操作。

消除不必要的大表全表搜索:不必要的全表搜索导致大量不必要的I/O ,从而拖慢整个数据库的性能。

调优专家首先会根据查询返回的行数目来评价SQL 。

在一个有序的表中,如果查询返回少于40% 的行,或者在一个无序的表中,返回少于7% 的行,那么这个查询都可以调整为使用一个索引来代替全表搜索。

对于不必要的全表搜索来说,最常见的调优方法是增加索引。

可以在表中加入标准的B 树索引,也可以加入bitmap 和基于函数的索引。

要决定是否消除一个全表搜索,你可以仔细检查索引搜索的I/O 开销和全表搜索的开销,它们的开销和数据块的读取和可能的并行执行有关,并将两者作对比。

在一些情况下,一些不必要的全表搜索的消除可以通过强制使用一个index 来达到,只需要在SQL 语句中加入一个索引的提示就可以了。

确保最优的索引使用:对于改善查询的速度,这是特别重要的。

有时Oracle 可以选择多个索引来进行查询,调优专家必须检查每个索引并且确保Oracle 使用正确的索引。

它还包括bitmap 和基于函数的索引的使用。

确保最优的JOIN 操作:有些查询使用NESTED LOOP join 快一些,有些则是HASH join 快一些,另外一些则是sort-merge join 更快。

这些规则看来简单,不过它们占SQL 调优任务的90% ,并且它们也无需完全懂得Oracle SQL 的内部运作。

以下我们来简单概览以下Oracle SQL 的优化。

oracle sql优化我们首先简要查看Oracle 的排序,并且看一看排序操作是如何影响性能的。

调整Oracle 的排序操作排序是SQL 语法中一个小的方面,但很重要,在Oracle 的调整中,它常常被忽略。

当使用create index 、ORDER BY 或者GROUP BY 的语句时,Oracle 数据库将会自动执行排序的操作。

通常,在以下的情况下Oracle 会进行排序的操作:使用Order by 的SQL 语句、使用Group by 的SQL 语句、在创建索引的时候、进行table join 时。

当与Oracle 建立起一个session 时,在内存中就会为该session 分配一个私有的排序区域。

如果该连接是一个专用的连接(dedicated connection) ,那么就会根据init.ora 中sort_area_size 参数的大小在内存中分配一个Program Global Area (PGA) 。

如果连接是通过多线程服务器建立的,那么排序的空间就在large_pool 中分配。

不幸的是,对于所有的session ,用做排序的内存量都必须是一样的,我们不能为需要更大排序的操作分配额外的排序区域。

因此,设计者必须作出一个平衡,在分配足够的排序区域以避免发生大的排序任务时出现磁盘排序(disk sorts )的同时,对于那些并不需要进行很大排序的任务,就会出现一些浪费。

当然,当排序的空间需求超出了sort_area_size 的大小时,这时将会在TEMP 表空间中分页进行磁盘排序。

磁盘排序要比内存排序大概慢14,000 倍。

上面我们已经提到,私有排序区域的大小是有init.ora 中的sort_area_size 参数决定的。

每个排序所占用的大小由init.ora 中的sort_area_retained_size 参数决定。

当排序不能在分配的空间中完成时,就会使用磁盘排序的方式,即在Oracle 实例中的临时表空间中进行。

磁盘排序的开销是很大的,有几个方面的原因。

首先,和内存排序相比较,它们特别慢;而且磁盘排序会消耗临时表空间中的资源。

Oracle 还必须分配缓冲池块来保持临时表空间中的块。

无论什么时候,内存排序都比磁盘排序好,磁盘排序将会令任务变慢,并且会影响Oracle 实例的当前任务的执行。

还有,过多的磁盘排序将会令free buffer waits 的值变高,从而令其它任务的数据块由缓冲中移走。

接着,让我们看一下Oracle 的竞争,并且看一下表的存储参数的设置是如何影响SQL UPDATE 和INSERT 语句的性能的。

调整Oracle 的竞争Oracle 的其中一个优点是它可以管理每个表空间中的自由空间。

Oracle 负责处理表和索引的空间管理,这样就可以让我们无需懂得Oracle 的表和索引的内部运作。

不过,对于有经验的Oracle 调优专家来说,他需要懂得Oracle 是如何管理表的extent 和空闲的数据块。

对于调整拥有高的insert 或者update 的系统来说,这是非常重要的。

要精通对象的调整,你需要懂得freelists 和freelist 组的行为,它们和pctfree 及pctused 参数的值有关。

这些知识对于企业资源计划(ERP )的应用是特别重要的,因为在这些应用中,不正确的表设置通常是DML 语句执行慢的原因。

对于初学者来说,最常见的错误是认为默认的Oracle 参数对于所有的对象都是最佳的。

除非磁盘的消耗不是一个问题,否则在设置表的pctfree 和pctused 参数时,就必须考虑平均的行长和数据库的块大小,这样空的块才会被有效地放到freelists 中。

当这些设置不正确时,那些得到的freelists 也是"dead" 块,因为它们没有足够的空间来存储一行,这样将会导致明显的处理延迟。

Freelists 对于有效地重新使用Oracle 表空间中的空间是很重要的,它和pctfree 及pctused 这两个存储参数的设置直接相关。

通过将pctused 设置为一个高的值,这时数据库就会尽快地重新使用块。

不过,高性能和有效地重新使用表的块是对立的。

在调整Oracle 的表格和索引时,需要认真考虑究竟需要高性能还是有效的空间重用,并且据此来设置表的参数。

以下我们来看一下这些freelists 是如何影响Oracle 的性能的。

当有一个请求需要插入一行到表格中时,Oracle 就会到freelist 中寻找一个有足够的空间来容纳一行的块。

你也许知道,freelist 串是放在表格或者索引的第一个块中,这个块也被称为段头(segment header )。

pctfree 和pctused 参数的唯一目的就是为了控制块如何在freelists 中进出。

虽然freelist link 和unlink 是简单的Oracle 功能,不过设置freelist link (pctused) 和unlink (pctfree) 对Oracle 的性能确实有影响。

相关文档
最新文档