看sql2005的联机帮助,有如下描述:
----------
IAM 页有一个标头,指明 IAM 页所映射的区范围的起始区。IAM 页中还有一个大位图,其中每个位代表一个区。位图中的第一个位代表范围内的第一个区,第二个位代表第二个区,依此类推。如果某个位是 0,它所代表的区将不会分配给拥有该 IAM 页的分配单元。如果这个位是 1,它所代表的区将被分配给拥有该 IAM 页的分配单元。
---------------从如下SQL看,一个IAM对应多个表
select c.name,a.first_iam_page
from sys.system_internals_allocation_units a
left join sys.partitions b on a.container_id=b.partition_id
left join sys.objects c on b.object_id=c.object_id
order by first_iam_page
那么,IAM页中的大位图,其中每个位代表一个区,如果某个位是 0,它所代表的区将不会分配给拥有该 IAM 页的分配单元。
但是一个IAM被多个表拥有,ms的意思是否是这个区不分配给拥有此IAM的所有表?
另:如果IAM页大位图一位标识一个区的话,如果是混合区,又如何标识这个区是否分配给拥有IAM的表呢?最后,如果没有这个大位图的说明,可以这样理解,根据IAM页链,找到所有区,然后遍历这些区中的页,根据页标头找分配单元号,对应到表IAM页中究竟有什么,如何用8K的容量管理4G的数据页分配?

解决方案 »

  1.   

    楼上的意思是不是:IAM页不是仅有8K
    那么IAM页中如何标识表对应的区呢?在IAM页中,是否会为每个拥有此IAM页的对象简历大位图呢?
    如何组织呢?
      

  2.   

    每一个IAM页的大小为8K
    如何标识如何组织我也不明白
      

  3.   

    IAM=index allocation map page,它用来跟踪哪些盘区是放数据的,哪些盘区是用来放索引的,它本是不存储用户的数据或索引,而是存储并决定用户的数据或索引该存储在哪个盘区!所以,它可以管理多达4GB的空间!