每条记录是如何保存的 ?谢谢指教~

解决方案 »

  1.   

    SQL Server 不是将表作为一个单位缓存在内存中,而是以存储表的数据页面为单位缓存在内存中。这些页面都具有唯一的标示(数据库 ID.文件 ID.页面 ID),SQL Server 通过这些标示来检索页面,从而检索表。具体的说,SQL SERVER 使用散列算法组织内存缓冲区中的页面——散列算法会构造一个映射到内存页的散列数组(相当于内存页的索引),当通过唯一标示访问数据页面时,散列算法会将唯一标示转换为散列数组的下标,通过这个下标可以在散列数组中定位一个数组值,这个值便是指向需要访问的内存页的指针。这样只需要几次内存读取便可以获得需要访问的内存页。
      

  2.   

    UP CAT果然是只强大的猫,PF
      

  3.   

    SQLServer以8K的页为基本存储单位。大的表可能有很多个页。如果表上有聚集索引,则页以B树(平衡树)的方式组织;如果表上没有聚集索引,则页以heap(堆)的方式组织。详见《SQL Server 2005技术内幕:存储引擎》。
      

  4.   

    内存中的数据只有查询相关的数据(而且大的数据集还会写入tempdb),表都是存在磁盘里的,通常不会整个取到内存中。内存中的数据页以hash表(哈希表)+链表的方式组织。