`
onepiece021
  • 浏览: 38659 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

行迁移/行链接的介绍

阅读更多
在实际的工作中我们经常会碰到一些Oracle数据库性能较低的问题,当然,引起Oracle数据库性能较低的原因是多方面的,我们能够通过一些正确的设计和诊断来尽量的避免一些Oracle数据库性能不好,Row Migration (行迁移) & Row Chaining (行链接)就是其中我们可以尽量避免的引起Oracle数据库性能低下的潜在问题。通过合理的诊断行迁移/行链接,我们可以较大幅度上提高Oracle数据库的性能。

那究竟什么是行迁移/行链接呢,先让我们从Oracle的block开始谈起。

操作系统的最小读写操作单元是操作系统的block,所以当创建一个Oracle数据库的时候我们应该讲数据库的block size设置成为操作系统的block size的整数倍,Oracle block是Oracle数据库中读写操作的最小单元,Oracle9i之前的Oracle数据库版本中Oracle block一旦在创建数据库的时候被设定后就没法再更改。为了在创建数据库之前确定一个合理的Oracle block的大小,我们需要考虑一些因素,例如数据库本身的大小以及并发事务的数量等。使用一个合适的Oracle block大小对于数据库的调优是非常重要的。

一个Oracle block由三个部分组成,分别是数据块头、自由空间、实际数据三部份组成。

数据块头:主要包含有数据块地址的一些基本信息和段的类型,以及表和包含有数据的实际行的地址。

自由空间:是指可以为以后的更新和插入操作分配的空间,大小由PCTFREE和PCTUSED两个参数影响。

实际数据:是指在行内存储的实际数据。

当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用两个存储参数:

PCTFREE:为将来更新已经存在的数据预留空间的百分比。

PCTUSED:用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用的块时可以执行插入的块,不可用状态的块只能执行删除和修改,可用状态的块被放在freelist中。

当表中一行的数据不能在一个数据block中放入的时候,这个时候就会发生两种情况,一种是行链接,另外一种就是行迁移了。

行链接产生在第一次插入数据的时候如果一个block不能存放一行记录的情况下。这种情况下,Oracle将使用链接一个或者多个在这个段中保留的 block存储这一行记录,行链接比较容易发生在比较大的行上,例如行上有LONG、LONG RAW、LOB等数据类型的字段,这种时候行链接是不可避免的会产生的。

当一行记录初始插入的时候事可以存储在一个block中的,由于更新操作导致行长增加了,而block的自由空间已经完全满了,这个时候就产生了行迁移。在这种情况下,Oracle将会迁移整行数据到一个新的block中(假设一个block中可以存储下整行数据),Oracle会保留被迁移行的原始指针指向新的存放行数据的block,这就意味着被迁移行的ROW ID是不会改变的。

当发生了行迁移或者行链接,对这行数据操作的性能就会降低,因为Oracle必须要扫描更多的block来获得这行的信息。
分享到:
评论

相关推荐

    oracle_行链接和行迁移

    ### Oracle行链接和行迁移详解 #### 一、概述 Oracle数据库中,行链接和行迁移是两种可能影响数据库性能的现象。了解这两种现象的发生原因及其处理方法对于优化Oracle数据库至关重要。 #### 二、Oracle块 Oracle...

    Oracle 行迁移与行链接的实验详解

    ### Oracle 行迁移与行链接的实验详解 #### 一、引言 在Oracle数据库管理过程中,行迁移(row migration)与行链接(row chaining)是两种常见的现象,它们通常发生在记录过大或更新操作导致记录扩展超出单个数据块所能...

    Oracle数据库中行迁移、行链接的问题

    在Oracle数据库中,行迁移(Row Migration)和行链接(Row Chaining)是两种与数据存储和空间管理紧密相关的现象。这两个概念对于理解和优化数据库性能至关重要。 行迁移是指当一个数据库行在一个分配的块中无法...

    Oracle8i行链接和行迁移探析.pdf

    《Oracle8i行链接和行迁移探析》这篇文章主要探讨了Oracle数据库中行迁移和行链接的概念、影响以及如何识别和处理这两种现象。行迁移和行链接是Oracle数据库在处理数据更新时可能出现的问题,对数据库性能产生显著...

    Oracle19c 数据库中行链接与行迁移详解及案例

    内容概要:本文详细介绍了 Oracle19c 数据库中的行链接和行迁移概念,解释了 PCTFREE 和 PCTUSED 参数的作用及其对数据块空间管理的影响。通过具体的示例,说明了行链接和行迁移的发生条件和解决方法。并提供了实际...

    行链接和行迁移的秘密

    本文主要描述的是:什么是行迁移与行链接如何判断行迁移与行链接如何避免行迁移与行链接当使用索引读取单行时,行迁移影响OLTP系统。最糟糕的情形是,对所有读取操作而言,增加了额外的I/O。行链接则影响索引读和全...

    MySQL+人大金仓+数据迁移

    本文将详细介绍如何使用人大金仓数据库迁移工具将 MySQL 数据库迁移到人大金仓数据库。 知识点1:新建目标数据库链接 在开始数据迁移之前,需要新建目标数据库链接。新建链接时,链接名建议与数据库名及模式名相同...

    虚谷数据库迁移工具-XuguMigrator

    虚谷数据库迁移工具-XuguMigrator

    淘宝海量数据迁移方案

    2. **Insert into table select * from table @Dblink**:利用Oracle的数据库链接功能,可以直接跨数据库进行数据迁移,适用于两数据库之间的简单迁移。 3. **Select * from table into outfile/load data (MySQL)**...

    Oracle数据库迁移相关技巧介绍

    ### Oracle数据库迁移相关技巧介绍 在进行Oracle数据库迁移时,会遇到各种各###样的技术挑战和技术细节。本文将详细介绍Oracle数据库迁移过程中的一些实用技巧,帮助读者更好地理解和掌握Oracle数据库迁移的关键...

    数据库整体拷贝迁移实践.txt

    本文档详细介绍了一种通过整库拷贝的方式进行Oracle数据库迁移的具体步骤与实践,适用于需要在两个完全一致的服务器配置之间进行数据库迁移的场景。 #### 关键概念解释 - **Oracle迁移**:指的是将Oracle数据库及其...

    MySQL 迁移数据库,并建立库的软链接

    本文将详细介绍如何通过复制MySQL数据库目录来完成数据库迁移的过程,并在此基础上创建软链接以方便管理和维护。此外,我们还将讨论如何确保权限正确设置,以保证数据库服务能够正常启动和运行。 #### 数据库迁移...

    Vscode最全插件包(包含所有插件使用链接,插件包迁移教程)

    包含所有插件使用极其插件包迁移教程 Vscode插件目录: VSCode 最全实用插件(VIP典藏版) https://blog.csdn.net/libusi001/article/details/124309613 VSCode插件打包迁移与指定位置 ... VSCode无网环境快速迁移...

    数据库迁移检查清单

    * 验证和确认开放查询/链接服务器的正确实现(如果存在) * 验证和确认动态查询语句 * 验证和确认DCL语句、GRANT权限等(如果存在) * 验证和确认联结(join)和DML语句形式的各种输入的正确输出行为 用户定义的...

Global site tag (gtag.js) - Google Analytics