1. using index pctfree 10 initrans 2 maxtrans 255 compute statistics
1.1. 这句总的是“数据块结构&其使用参数以及表参数”
1.2. Oracle中,数据库逻辑结构被划分为:
1.2.1. 表空间 tablespace
1.2.2. 段 segment
1.2.3. 分区 extent
1.2.4. 块 block----最小
1.3. PCTFREE:为数据更新准备的留白—也就是一种空间的闲置。【如果需要进行某种数据表压缩,设置PCTFREE为0也是一种思路。】
1.3.1. 数据会填写到block中,会一次填满block的行数据;而Oracle填写数据表的顺序是先找到一个空闲快,然后再填数据。
1.3.2. Oracle如何判断这个数据块是否非空闲呢?
1.3.2.1. 通过使用PCTFREE参数:该参数是一个百分比值,默认为10%。如果一个数据块空闲的空间低于PCTFREE设定值,就认为这个数据块已经写满。会将这个块从空闲块的列表(FREELIST)上取下来。
1.3.2.2. 为什么要有这个参数?为什么要保留这10%呢?
1.3.2.2.1. 为了update使用。
1.3.2.2.2. 数据保存在数据行里,随着不断的更新,每行所占有的空间是一个不定的范围。在数据插入之后,如果发生存储空间增加(比如:varchar2类型字符长度变化),余下的10%就留作数据行空间延展使用。
1.3.2.3. 如果超过这个10%,还是不能装下数据怎么办?
1.3.2.3.1. Oracle定位数据使用的物理rowid机制,---就是定位特定的数据行在某个数据块的第几个slot(槽)上。
1.3.2.3.2. 如果一个数据块再也装不下一些数据行,