行链接和行迁移案例

简介:

行链接和行迁移案例

两则之间的区别:

             行链接是指一个行存储在多个块中的情况,因为一个该行的长度超过了一个块的可用空间大小。(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,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
人工智能 自然语言处理 安全
中央网信办部署开展“清朗·整治AI技术滥用”专项行动
中央网信办近日印发通知,启动为期3个月的“清朗·整治AI技术滥用”专项行动,旨在规范AI服务与应用,促进行业健康发展,保障公民权益。行动分两个阶段:第一阶段聚焦源头治理,包括清理违规AI程序、加强生成内容标识管理等;第二阶段集中整治利用AI制作谣言、不实信息、色情低俗内容及侵权行为等问题。此次行动将强化平台责任,提升技术检测能力,推动AI技术合法合规使用,维护网络环境清朗。
|
监控 Java Linux
Hutool操作和监听文件
Hutool操作和监听文件
364 0
|
移动开发 JavaScript 前端开发
【绝技揭秘】从零到英雄:解锁UniApp H5项目中的二维码生成与扫描秘籍,让你的应用瞬间变身扫码达人!
【8月更文挑战第20天】二维码在移动应用中无处不在。本文详述了在UniApp H5项目中实现二维码生成与扫描的方法。通过对比插件`uni-app-qrcode`和JavaScript库`qrcode-generator`生成二维码的方式,以及使用插件`@juggle/resize-observer`和HTML5的MediaDevices API进行扫描的技术方案,帮助开发者挑选最佳实践。无论是插件的便捷性还是原生JavaScript的灵活性,都能满足不同项目需求。
872 0
|
消息中间件 前端开发 JavaScript
【前端】websocket 讲解与项目中的使用
【前端】websocket 讲解与项目中的使用
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
|
容器
会议OA项目-首页->flex弹性布局,轮播图后台数据获取及组件使用(后台数据交互mockjs),首页布局
会议OA项目-首页->flex弹性布局,轮播图后台数据获取及组件使用(后台数据交互mockjs),首页布局
181 0
|
XML 存储 前端开发
|
开发工具
语音聊天室源码技术美颜滤镜功能的配置
美颜滤镜功能从现身以来一直受到人们的火爆追捧,所以为了顺应市场的需求,开发语音聊天室源码平台也必须要有美颜滤镜功能,今天我就将语音聊天室源码技术美颜滤镜功能的配置知识分享给大家。
语音聊天室源码技术美颜滤镜功能的配置
Qt | 鼠标事件和滚轮事件 QMouseEvent、QWheelEvent
学习使用Qt的鼠标事件和滚轮事件。
1104 0