真正的原因其实是表空间在申请扩大空间时花费了大量时间
TBS_LJB_C表空间本身就够装下插入1000万行记录后的T表,表空间不需要扩展,速度也还不错,22秒即可完成,与前面的21秒差别不大。
对 Oracle 来说,表空间扩大是要格式化操作系统文件成为 Oracle可以识别的数据库,这当然需要很大的开销了。如果空间已经足够大,其中的段申请扩展,那都是可以识别的格式,无须格式化动作,开销就不是太大了。
在创建表空间时,需要预先规划好表空间的大小,如果段的扩展导致表空间不够而需要表空间去扩大,那开销是很大的,但是如果预先分配过多,也是一种浪费,需要我们根据实际应用去平衡。
PCTFREE与性能可以根据数据库对表更新的频繁程度对表的PCTFREE做设置,免得产生行迁移,影响性能
用户HR是Oracle建库时自带的一个供大家参考的测试用户
PCTFREE试验准备之建表
将几个字段扩大
在几个从20字节扩大为2000字节的字段中填满数据,这必然会导致产生大量的行迁移: