行链接和行迁移案例

简介:

行链接和行迁移案例

两则之间的区别:

             行链接是指一个行存储在多个块中的情况,因为一个该行的长度超过了一个块的可用空间大小。(Insert)
             行迁移是指一个数据行不适合放入当前块而被重新定位到另一个块,但在原始块中保留一个指针,原始块中的指针是必需的,因为索引的rowid项仍然指向原始位置.(update)         

            行链接通常与行的长度和oracle数据库块中的大小有关,而行迁移通常是当一个更新操作的长度增加且又要保持该行在同一块中,而该块又缺少可用空间时产生的问题,oracle在决定行连接之前先试图进行行迁移。

行连接


1、建立表


04:50:36 SQL> show user;
USER is "SCOTT"
04:50:39 SQL>  create table t_row_chaining (x char(2000), y char(2000), z char(2000), q char(2000));

Table created.

04:50:51 SQL> insert into t_row_chaining values('x','y','z','q');

1 row created.

04:51:05 SQL> commit;

Commit complete.

2、执行脚本,建立行链接和行迁移视图

04:51:10 SQL> @?/rdbms/admin/utlchain.sql

Table created.

04:51:32 SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE
EMP1                           TABLE
EMP5                           TABLE
SALES                          TABLE
SYS_IOT_OVER_12021             TABLE
SALES_INFO                     TABLE
DEPT_EMP_CLU                   CLUSTER
DEPARTMENT                     TABLE            1
EMPLOYEE                       TABLE            2
TMP1                           TABLE
TMP2                           TABLE
T_ROW_CHAINING                 TABLE
CHAINED_ROWS                   TABLE

16 rows selected.

04:51:40 SQL> desc CHAINED_ROWS
 Name                                                                                Null?    Type
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
 OWNER_NAME                                                                                   VARCHAR2(30)
 TABLE_NAME                                                                                   VARCHAR2(30)
 CLUSTER_NAME                                                                                 VARCHAR2(30)
 PARTITION_NAME                                                                               VARCHAR2(30)
 SUBPARTITION_NAME                                                                            VARCHAR2(30)
 HEAD_ROWID                                                                                   ROWID
 ANALYZE_TIMESTAMP   
 
 3、分析表的行链接信息                                                                         DATE

04:51:50 SQL> ANALYZE TABLE t_row_chaining LIST CHAINED ROWS;

Table analyzed.

04:52:09 SQL>

04:52:09 SQL> select OWNER_NAME,TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from chained_rows;

OWNER_NAME                     TABLE_NAME                     HEAD_ROWID         ANALYZE_T
------------------------------ ------------------------------ ------------------ ---------
SCOTT                          T_ROW_CHAINING                 AAAC9KAAEAAAAB3AAA 25-MAR-12

-------由于插入的记录长度超过了block的free space ,发生行链接


行迁移

1、建立表

04:53:06 SQL>  create table t_row_migrating (x varchar2(2000), y varchar2(2000), z varchar2(2000), q varchar2(2000));

Table created.

04:54:01 SQL> insert into t_row_migrating values ('x','y','z','q');

1 row created.

04:54:12 SQL> commit;

Commit complete.

04:54:20 SQL> delete chained_rows;

1 row deleted.

04:54:42 SQL> ANALYZE TABLE t_row_migrating LIST CHAINED ROWS;

Table analyzed.

04:54:54 SQL>  select OWNER_NAME,TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from chained_rows;

no rows selected


2、对表做update 实验

04:55:03 SQL>  update t_row_migrating set (x,y,z,q)=(select * from t_row_chaining);

1 row updated.

04:57:17 SQL> commit;

Commit complete.

04:57:33 SQL> ANALYZE TABLE t_row_migrating LIST CHAINED ROWS;

Table analyzed.

04:57:41 SQL>  select OWNER_NAME,TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from chained_rows;

OWNER_NAME                     TABLE_NAME                     HEAD_ROWID         ANALYZE_T
------------------------------ ------------------------------ ------------------ ---------
SCOTT                          T_ROW_MIGRATING                AAAC9MAAEAAAACGAAA 25-MAR-12

04:57:53 SQL>

no rows selected

04:55:03 SQL>

----------更新后的记录变长,在block free space 无法存放,发生行迁移










本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/816715,如需转载请自行联系原作者
目录
相关文章
|
14天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
6091 45
|
15天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
5079 60
|
9天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
2421 6
|
7天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1514 0
|
9天前
|
云安全 人工智能 安全
|
2天前
|
云安全 人工智能 安全
|
8天前
|
人工智能 并行计算 调度
本地 AI 一键部署工具 LocModel:Windows 端集成画图、视频生成、Agent 的开源模型运行方案
LocModel 是专为 Windows 设计的一站式本地 AI 工具,支持零配置启动、自动硬件检测、GGUF 模型一键加载、文生图/视频生成及 Agent 自动化任务。适配 8G 显存,内置显存分片调度,轻松实现 AI 漫剧批量创作与离线大模型调用。(239 字)