• 行链接和行迁移


    CHAIN_CNT:虽然行链接和行迁移的概念不同,但在ORACLE里其实不太分这个,CHAIN_CNT是总的数量
    
    
    PCTFREE:
    PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:
    
    当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。
    
    
    create table TEST_1
    (
      OWNER          VARCHAR2(30),
      OBJECT_NAME    VARCHAR2(128),
      SUBOBJECT_NAME VARCHAR2(30),
      OBJECT_ID      NUMBER,
      DATA_OBJECT_ID NUMBER,
      OBJECT_TYPE    VARCHAR2(19),
      CREATED        DATE,
      LAST_DDL_TIME  DATE,
      TIMESTAMP      VARCHAR2(19),
      STATUS         VARCHAR2(7),
      TEMPORARY      VARCHAR2(1),
      GENERATED      VARCHAR2(1),
      SECONDARY      VARCHAR2(1),
      NAMESPACE      NUMBER,
      EDITION_NAME   VARCHAR2(30)
    )
    tablespace USERS
      pctfree 0
      initrans 1
      maxtrans 255
      storage
      (
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
      );
    
    SQL> select
       owner              ,
       table_name         ,
       pct_free           ,
       pct_used           ,
       avg_row_len        ,
       num_rows           ,
       chain_cnt          ,
       chain_cnt/num_rows 
    from
       dba_tables
    where
       table_name='TEST_1'
    order by
       chain_cnt desc;  2    3    4    5    6    7    8    9   10   11   12   13   14   15  
    
    OWNER			       TABLE_NAME			PCT_FREE   PCT_USED AVG_ROW_LEN   NUM_ROWS  CHAIN_CNT CHAIN_CNT/NUM_ROWS
    ------------------------------ ------------------------------ ---------- ---------- ----------- ---------- ---------- ------------------
    SCOTT			       TEST_1				       0
    
    
    pct_free=0  稍微update一下就产生hang迁移
    
    
    DECLARE  
      CURSOR cur IS  
        SELECT   
         a.ROWID from test_1 a ;  
      V_COUNTER NUMBER;  
    BEGIN  
      V_COUNTER := 0;  
      FOR row IN cur LOOP  
        UPDATE test_1  
           SET OBJECT_ID = 9999 
    
    ,OBJECT_NAME='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 
         WHERE ROWID = row.ROWID ;
        V_COUNTER := V_COUNTER + 1;  
        IF (V_COUNTER >= 10000) THEN  
          COMMIT;  
          V_COUNTER := 0;  
        END IF;  
      END LOOP;  
      COMMIT;  
    END;
    
    批量update
    
    SQL> analyze table TEST_1 compute statistics;
    
    
    SQL> set linesize 200
    SQL>  select
       owner              ,
       table_name         ,
       pct_free           ,
       pct_used           ,
       avg_row_len        ,
       num_rows           ,
       chain_cnt          ,
       chain_cnt/num_rows 
    from
       dba_tables
    where
       table_name='TEST_1'
    order by
       chain_cnt desc;   
      2    3    4    5    6    7    8    9   10   11   12   13   14   15  
    OWNER			       TABLE_NAME			PCT_FREE   PCT_USED AVG_ROW_LEN   NUM_ROWS  CHAIN_CNT CHAIN_CNT/NUM_ROWS
    ------------------------------ ------------------------------ ---------- ---------- ----------- ---------- ---------- ------------------
    SCOTT			       TEST_1				       0		    170    8886376    5059910	      .569400845
    

  • 相关阅读:
    [leetcode]687. Longest Univalue Path
    [leetcode]543. Diameter of Binary Tree二叉树的直径
    [LeetCode]Subtree of Another Tree判断一棵树是不是另一棵树的子树
    [leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值
    [leetcode]450. Delete Node in a BST二叉搜索树删除节点
    [LeetCode]652. Find Duplicate Subtrees找到重复树
    MySQL 数据库
    javaScript
    Css 笔记
    Html 笔记
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3798015.html
Copyright © 2020-2023  润新知