SQL Server查询调优:内部结构与索引详解
1. 引言
在数据库操作中,查询调优是提升性能的关键。不同数据库平台在物理层实现上存在差异,要做好查询调优,需深入了解所使用平台的物理层。本文聚焦于Microsoft SQL Server平台,介绍其物理层的各个方面,为查询调优奠定基础。
2. 内部数据结构
2.1 页面和区
- 页面 :是SQL Server存储数据的8KB单位,对于基于磁盘的表,它是最小的I/O单位。页面的96字节头部包含分配单元、前后页指针、空闲空间等信息。通过
sys.allocation_units和sys.partitions视图可确定页面所属对象。数据和索引页面的主体包含数据或索引记录,页面末尾的行偏移数组指向页面内的各个记录,与页面头部的前后指针共同维护索引键顺序。- 读写页面时,SQL Server需将页面加载到缓冲池(内存中的数据缓存)。若页面已在缓存中,执行逻辑读写;若不在,先进行物理读写,再进行逻辑读写。SQL Server会定期通过
lazywriter和checkpoint进程将脏页从缓存写入磁盘,并使用LRU - K2算法根据页面的最后两次访问来确定释放哪些页面。
- 读写页面时,SQL Server需将页面加载到缓冲池(内存中的数据缓存)。若页面已在缓存中,执行逻辑读写;若不在,先进行物理读写,再进行逻辑读写。SQL Server会定期通过
- 区 :包含八个连续页面。SQL Server支持混合区和统一区两种类型。对于新对象,先从混合区一次分配一个页面,直到达到8页大小,之后从统一区分配页面
SQL Server索引与查询优化
超级会员免费看
订阅专栏 解锁全文
965

被折叠的 条评论
为什么被折叠?



