大小区优缺点,超过一M区有意义吗? 表空间管理技术管理的是区,本地管理表空间LMT在每个数据文件头部加入位图区域管理的是EXTENT的使用情况.
EXTENT的使用和释放时ORACLE会在数据文件头的位图区域更新记录。
对于大小区,事实上即使在系统自动分配区大小的管理方式下,8M的区也很普遍,如下:
系统管理区大小由系统自动分配扩展的区大小,
在段的前1M空间:区大小8个块=64K,前16个区是这样。
在段1M---64M之间:区大小1M,128个块
在段64M之后,区大小8M。
大小区优点缺点汇总:
小区:优点省空间
:缺点分配次数可能达多,甚至由此引起数据文件头位图区的争用。
大区:缺点浪费空间、和在分配和回收时多耗用一点点CPU
:优点:全扫描段时减少I/O的次数--详解下一个问题
减少分配的次数。
扫描段时也会减少段头的次数--段头会被缓存
大区、大IO,无并发时全表扫描速度更快
小区、小IO,有并发时全表扫描速度更快
大小区对并发的影响?
大区小区对并发没有太大影响,因为并发最终操作的是数据块大小--操作块时会加锁-buffer pin,可能会产生 buffer busy waits。如块大,行多,比如 500行,竞争大,并发相对小。而块小,行少,如100行,竞争少,相对支持的更大并发。
但是大小区对并发也会有一点影响,就是高水位的推进,一般是以一个区为单位推进的。详见:
大区会增加OLTP的I/O性能吗?为什么?
对OLTP没影响或者说影响很小。
对OLAP可以减少I/O次数,或者让随机I/O变为顺序I/O。
但是要考虑:
OS、硬件驱动:最大IO大小1M。
区内的空间是连续的。--表碎片 ???
读一个8M的区,包含8个1M的I/O,很有可能,这8次I/O,是顺序IO。
读8个1M的区,至少8次随机I/O。
但是系统自动分配时,在64M后也是自动分配8M的区了,使用系统分配区大小即可。
除非表空间中段很多,很多小表大于8M小于百M全表扫描,此时可以考虑将表空间设置为统一区大小。
这里要考虑底层存储的AU。如8M 的AU、8M的区,这样能保证每个AU的8M在同一个磁盘,如存储最大支持4M,这时可以区大小4M或不管,ASM层AU也是4M。--好像不太实用啊。
这一段是OLAP时要考虑的。
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/