二. freelists是否已经过时
随着oracle9i的推出,对于空闲块的管理变得更加智能和有效率了。在lmt(locally managed tablespaces)中如果指定了assm(automatic segment space management),那么对于任何pctused,freelists,freelist groups存储参数的指定都将被忽略。创建assm表空间的方法如下:
create tablespace lmtbsb datafile ''/u02/oracle/data/lmtbsb01.dbf'' size 50m
extent management local
segment space management auto;
assm得益于使用位图(bitmaps)来管理段中的空闲块,至于具体是如何管理的,那又是另外一篇文章了。
就此意义上来说,对于freelists的探讨确实可能已经有些过时了,但是首先并不是所有的数据库现在都已经升级到了oracle9i,甚至在最需要调整的一些大型应用上往往都由于业务的稳定性而不愿意冒升级到新版本的危险;其次即使是新的应用使用了oracle9i数据库,如果数据库管理员在创建表空间的时候没有明确指定segment space management auto,那么默认情况下仍然会使用freelists和freelist groups来管理free block。
所以,在仍然存在有大量oracle8i数据库和非自动段空间管理表空间的现在,对于freelists的研究仍然具有很实际的意义,而由于默认的freelists和freelist groups又都只有1,所以又恰恰是高负载的应用中最需要调整(tuning)的部分之一。