November 5, 2005 at 1:16 pm
Hi,
In an IAM of a heap or index, we have a bitmap that has bits for each extent in the file in which the heap or index exists. We have the address of the first extent in the range of extents mapped by the IAM. But a file is not necessarily all contiguous. What if an IAM has extents from different areas of the file that are not physically contiguous. Having the address of the first extent in the range of extents mapped would not be enough in this case. Where does SQL Server get the address of the other extents mapped by the IAM from? Please shed some light on this.
Thanks a lot.
Karim
November 5, 2005 at 4:30 pm
"But a file is not necessarily all contiguous. What if an IAM has extents from different areas of the file that are not physically contiguous"
Instead of "different areas of the file" do you mean different areas of the DISK" ?
The answer is NTFS keeps track of mapping file fragments to disk locations and SQL Server does not read disks but actually request the read thru NTFS.
When using raw partitions is it slightly different, but as there can only be one file on a raw partition, there is never any fragmentation. Not having to interface thru NTFS is the major reason why raw partitions are faster than files.
P.S. Kalen Delaney's "Inside Microsoft SQL Server 2000" covers the internals and is well recommended. ISBN: 0735609985
SQL = Scarcely Qualifies as a Language
November 6, 2005 at 9:59 pm
Thanks for your answers, Carl. I will try getting the book.
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply