Tuning 13 Using oracle blocks Efficiently_sed

推进使用自动管理 automatic segment

Tuning 13 Using oracle blocks Efficiently_JAVA_02

1 个 Blocks = 2的幂次方倍

tablespace 像一块地

segment 像一个房子

extents 向一个装砖头的框

blocks 像砖头

Tuning 13 Using oracle blocks Efficiently_数据仓库_03

segment 一次性最少要分配一个 extents

Tuning 13 Using oracle blocks Efficiently_数据_04

推荐使用 UNIFORM 在创建 extent 时.

Tuning 13 Using oracle blocks Efficiently_数据仓库_05

Tuning 13 Using oracle blocks Efficiently_数据仓库_06

grant connect, resource to mark;

create table t(id int, name char(10));

Tuning 13 Using oracle blocks Efficiently_oracle_07

注意, 执行第一个命令时无法得到empty blocks 的数值, 需要执行 analyze table t compute statistics 才能得到 empty block (在 dba_tables)

alter table t allocate extent;  -- 增加 extent

alter table t allocate extent (size 10m);  -- 直接扩充10M, 因为这个环境一个extent是1m, 这样就扩充了10个extent.

Tuning 13 Using oracle blocks Efficiently_sed_08

Tuning 13 Using oracle blocks Efficiently_oracle_09

Tuning 13 Using oracle blocks Efficiently_JAVA_10

oracle 的全表扫描会扫描到高水位的地方

Tuning 13 Using oracle blocks Efficiently_数据仓库_11

可以看到高水位是在一个extent里的block 的情况.

Tuning 13 Using oracle blocks Efficiently_数据仓库_12

Tuning 13 Using oracle blocks Efficiently_oracle_13

Tuning 13 Using oracle blocks Efficiently_数据_14

Tuning 13 Using oracle blocks Efficiently_oracle_15

Tuning 13 Using oracle blocks Efficiently_数据仓库_16

Tuning 13 Using oracle blocks Efficiently_数据_17

Tuning 13 Using oracle blocks Efficiently_sed_18

小块对 OLTP 比较好

Tuning 13 Using oracle blocks Efficiently_JAVA_19

OLAP 使用大块, 决策支持, 数据仓库 等

Tuning 13 Using oracle blocks Efficiently_oracle_20

Tuning 13 Using oracle blocks Efficiently_数据仓库_21

只要记住PCTFREE 就行了, 下边的 PCTUSED 不用考虑

Tuning 13 Using oracle blocks Efficiently_JAVA_22

Migration: 迁移, 在block中的数据体积变大了, 那么它首先会在本块中寻找空间, 但是如果本块中没找到, 就会将这个信息移动到另一个块里, 并且在原来块里留下指针, 注意这样要读2次I/O, 因为前一个块只读到了一个指针. 所以要尽量避免这个事情发生.

Chaining: 这条记录太大了, 大到整个block 都放不下了, 那没办法了, 只能将这个信息分部分存储在两个或多个块里, 这样也要读2次I/O. 发生这个的原因或者是block小或者是表设计不当

Tuning 13 Using oracle blocks Efficiently_数据仓库_23

Tuning 13 Using oracle blocks Efficiently_oracle_24

Tuning 13 Using oracle blocks Efficiently_数据仓库_25

move 的意思是将这个表copy到另一个表, 然后再将这个表删除

Tuning 13 Using oracle blocks Efficiently_sed_26

监控索引, 在恰当的时候对索引进行rebuild 等内容.

Tuning 13 Using oracle blocks Efficiently_数据仓库_27

Tuning 13 Using oracle blocks Efficiently_数据_28

Tuning 13 Using oracle blocks Efficiently_JAVA_29

Tuning 13 Using oracle blocks Efficiently_JAVA_30
下边两个过时了, 在10g,11g都不这么用了

Tuning 13 Using oracle blocks Efficiently_数据仓库_31

Tuning 13 Using oracle blocks Efficiently_JAVA_32