• oracle 基础知识(十五)----高水位线


    一,oracle的逻辑存储管理

    ORACLE的逻辑存储管理,分4个粒度:表空间,段,区和块.
    ## 块
    粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行. 
    ## 区
    由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表PM_USER时,首先ORACLE会分配一区的空间给这个表,随着不断的INSERT数据到PM_USER,原来的这个区容不下插入的数据时,ORACLE是以区为单位进行扩展的,也就是说再分配多少个区给PM_USER,而不是多少个块. 
    ## 段
    由一系列的区所组成,一般来说,当创建一个对象时(表,索引),就会分配一个段给这个对象.所以从某种意义上来说,段就是某种特定的数据.如CREATE TABLE PM_USER,这个段就是数据段,而CREATE INDEX ON PM_USER(NAME),ORACLE同样会分配一个段给这个索引,但这是一个索引段了.查询段的信息可以通过数据字典: SELECT * FROM USER_SEGMENTS来获得
    ## 表空间
    包含段,区及块.表空间的数据物理上储存在其所在的数据文件中.一个数据库至少要有一个表空间.
    

    二,oracle的水线

    高水位线就存在于段(segment)中,它用于标识段中已使用过的数据块与未使用地的数据块二者间交界,全表扫描数据的时候,高水位线以下的所有数据块都必须被扫描。高水位线存在于段,且高水位线的位置记录在段头,也就是段的第一个数据块中。因此,我们可以转存储段头信息来看高水位信息。
    段又有很多种,数据段,索引段,临时段,回滚段等。当创建段的时候会分配区,区是由若干个物理连续的数据块组成。区的分配是需要初始化数据块的,默认初始化(format)单位为1M。记住,高水位线并不是初始化的交界片,被初始化过的数据库并不一定使用过。
    
    ** 所谓全表扫描,也就是扫描高水位线以下的所有的块的全扫描,有多少扫描多少.即使空的.*
    

    三,操作中学习高水位

    dump 数据块 细微查看
    
     ALTER SYSTEM DUMP DATAFILE 1 BLOCK 89168;
    
     表分析
    
    ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS;
    
    SELECT table_name,num_rows, --表中的记录
    blocks, --表中数据所占用的数据块数
    empty_blocks, -- 表中的空块数
    AVG_SPACE, -- 数据块中平均的使用空间
    chain_CNT, --表中行连接和行迁移的数量
    AVG_ROW_LEN --每条记录的平均长度
    FROM user_tables
    WHERE table_name = <tablename>;
    
    BLOCKS 列代表该表中曾经使用过得数据库块的数目,即水线。
    EMPTY_BLOCKS 代表分配给该表,但是在水线以上的数据库块,即从来没有使用的数据块。
    

    四,高水位线

       删除表数据并不会删除高水位线,
       全表扫描依旧会扫描所有的块
    
    1. alter table table_name move;
    此方法可释放高水位,但需要重建索引
    2.alter table table_name shrink space;
    此方法可释放高水位,但执行前需要开启行移动,
    
    alter table table_name enable row movement;
    3.emp/imp的方式重建表数据
    4.drop/create方式重建表
    5.truncate表 --危险哦
    6.alter   table  table_name  deallocate   unused  
    DEALLOCATE UNUSED为释放HWM上面的未使用空间,但是并不会释放HWM下面的自由空间,也不会移动HWM的位置. 
    
  • 相关阅读:
    Bug生产队 【Alpha】Scrum Meeting 4
    2020春软件工程助教工作总结 第十六周
    2020春软件工程助教工作总结 第十四周
    2020春软件工程助教工作总结 第十二周
    word2vec算法原理理解
    2020春软件工程助教工作总结 第十周
    2020春软件工程助教工作总结 第八周
    2020春软件工程助教工作总结 第六周
    2020春软件工程助教工作总结 第四周
    2020春软件工程助教工作总结 第三周
  • 原文地址:https://www.cnblogs.com/kingle-study/p/10669105.html
Copyright © 2020-2023  润新知