假设我们有一个具有唯一聚簇索引的表。我们使用索引键值查询该表中的行。 SQL Server将使用索引查找来查找相关的数据页。
但是,在使用file_id后,SQL Server如何从物理磁盘读取这些数据页:page_id?它如何知道磁盘扇区/集群的位置?
答案 0 :(得分:0)
SQL Server不处理磁盘扇区/群集。
它从files
读取,逻辑上划分为pages
(8Kb)。
Extent
连续8页。
每个表都有IAM
个与之关联的页面,其中列出了分配给该表的所有扩展区(它是一个位图页面,其中1表示扩展区分配给该对象,0表示它是不是)。
SQL Server维护指向第一个IAM页面的内部指针
堆的第一个数据页。可以在系统视图sys.system_internals_allocation_units
中找到这些指针。
在聚集索引的情况下,所有数据都像往常一样存在于页面中,并且仍然可以使用IAM页面读取,但也可以在" ordered"使用binary tree
作为索引的方式。
这意味着在数据(索引叶子页面)服务器上构建了另外的搜索结构(也包含页面),根页面会指示您在聚簇索引键的基础上降低索引级别。
结论:索引页面中显示的所有地址都包含file_id:page_id
,而不是群集/扇区。
您可以在此处找到数据库结构的组织方式: