逻辑存储结构 Data Blocks,Extents and segments
一 Data Block
Data Block 的大小由DB_BLOCK_SIZE参数指定 为操作系统块大小的整数倍,Data Block 是oracle的最小存储单元.
Data Block 的格式都是类似的包括 Header(存储块的地址,块的类型table or index),Table Directory(包含行数据的信息),Row Directory(包含行地址),Free Space,Row Data
在一个数据块内进行插入或者修改,或者有事务时,会使用Free Space
delete或者将数据更新为更小的值会增加Data Block的空间
row chaining 行连接,当一行的数据过大,一个数据库无法存储,这时将用多个Data Block存储
row migrating 行迁移,当某行更新时,新的数据无法在原来的Data Block显示,这时将数据全部移到新的Data Block 存储
数据行发生row chaining或者row migrating时都会影响查询的性能
处理row migrating的思路就是先备份表的数据,然后删除表,最后再重新建表恢复数据
检查行迁移需要导入utlchain.sql文件 位置在D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN
导入后执行select OWNER_NAME,TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from chained_rows进行查询
PCTFREE,PCTUSED数据库可用块比列和已用块比例,协同工作优化性能
二 extents 数据扩展
extents是有一组连续的数据块组成,段由一个或者几个数据扩展做成
三 segment 数据段
数据段有数据扩展组成,包括表段,索引段等