SQL Server索引进阶第四篇:页和区
上一篇 / 下一篇 2012-09-13 17:10:05 / 个人分类:数据库
在上一篇文章中,我们比较了完全相同的查询语句分别在存在聚集索引和非聚集索引的环境下耗费的成本.我们以“逻辑读”作为衡量成本的主要标准。现在就让我们来解释逻辑读作为主要衡量标准的原因以及SQLServer在读取时究竟读取什么。51Testing软件测试网~)IP_2n:Vy
51Testing软件测试网E4N4~v0~8nrwA当你提交一个向SQL Server的请求查询时,SQL Server知道扫描整表一定可以满足这个需求。但如果使用索引进行数据查找的成本要低于整表扫描时,SQL Server会选择索引。也许你就开始有疑问了,那SQL Server根据什么因素判断成本呢?主要是磁盘IO,查询所请求的磁盘IO是查询消耗的主要部分,这也许是因为IO占用了最宝贵的两种资源:时间和内 存。51Testing软件测试网F%ppQIK(^v
51Testing软件测试网t].[#sd扫描整表时SQL Server所引起的I/O很多人都理解的不太正确,因为实际上SQL Server并不会读取行,而是读取页。页和行作为不同粒度的单位对于读取来说是完全不同的。51Testing软件测试网#RI*qJ*r[r
51Testing软件测试网(i6LLmkpFS @)G本篇文章是系列文章中最短的,因为本文主要讲述SQL Server进行IO请求。理解SQL Server的IO是对于理解很多现象的必要基础,比如为什么某些索引使得查询跑得更快而另一些查询不会,或是为什么某些修改数据的查询比其它查询执行的 更快,亦或是为什么某些维护计划需要更长的时间。总之,对于SQL Server IO的理解是理解本系列文章的后续文章的关键所在
l3oGTD0?b2Qy\ E0 页51Testing软件测试网 W9vc,w6u nJe+fq
51Testing软件测试网 pn N%p3rzL你创建了一个数据库时, 你指定了数据库文件所存储的位置。对于SQL Server来说,每一个文件都是一长串的bytes.SQL Server逻辑上(仅仅是逻辑上,不是物理上)把这个文件分成N多8K大小的块。这个块就是所谓的页。数据库文件第一个8K的块就是页#0,下一个8K 的块就是页#1,依此类推。页是IO读取的最小单元,SQL Server每一个IO读写都涉及一个页,当然了,对于多个物理上连续的页,SQL Server也可以用一个IO全部完成。51Testing软件测试网^ Aa}&B
51Testing软件测试网.xNN*k2{C/n页不仅仅是IO读取的最小单位,也是所有权的最小单位。如果一页中包含了表A的一行数据,这页 就只能存储表A的行数据了。或是一页中包含了索引B的条目,那这页也仅仅只能存储索引B的条目了。每页中除去存储数据之外,还存储一些页头信息以及行偏移 以便SQL Server知道具体每一行在页中的存储位置。
.]F-]VW'X0Bf(?3ue WR0 在上一篇中,我们多次讲述了条目在索引中连续,无论是在聚集索引还是非聚集索引中,下面,我们更详细的说一下所谓的连续。在SalesOrderDetail表中的部分数据可以让你对页有一个更直观的认识。
o@v"R*eq0z HB$T-{6\0 SalesOrderID SalesOrderDetailID ProductID OrderQty UnitPrice51Testing软件测试网!Gf&F8}.k*qg h-Y
51Testing软件测试网 C!CR[ K `$m*H Page n-1:
UH&f5~H r0 43668 106 722 3 178.58
noq_J}:d)Wl^7[0 43668 107 708 1 20.19
Page n:
u8Yv2ls9N/d0 43668 108 733 3 356.9051Testing软件测试网 I2T] J._&L
43668 109 763 3 419.4651Testing软件测试网xKUoq
43669 110 747 1 714.70
DGNd'PV.INmy0 43670 111 710 1 5.7051Testing软件测试网vLD(|$Fq"y
m
43670 112 709 2 5.7051Testing软件测试网.cC3?Y,\
43670 113 773 2 2,039.99
ks
Y7l0|1~9q0 43670 114 776 1 2,024.9951Testing软件测试网0m/Wi8ekF
43671 115 753 1 2,146.9651Testing软件测试网g],tOI'h$A$OJ
43671 116 714 2 28.8451Testing软件测试网_LIh|k
43671 117 756 1 874.79
3[
r;G*OI;?*C0 Page n+1:
R&bOt;@"uF0 43671 118 768 2 419.4651Testing软件测试网IhQ~j~/`]
43671 119 732 2 356.9051Testing软件测试网k x6Q?'j!x.{
43671 120 763 2 419.4651Testing软件测试网7MKm/l0QanI
43671 121 755 2 874.79
/^J)vCI9c5F8@j:M0 43671 122 764 2 419.4651Testing软件测试网4NP*r&S%K&N$TU
43671 123 716 1 28.8451Testing软件测试网lM2xm.v
43671 124 711 1 20.1951Testing软件测试网n Tk
~s YK
43671 125 708 1 20.1951Testing软件测试网Q%QY{$n N1||
43672 126 709 6 5.7051Testing软件测试网:RCB7Y9f-sS
43672 127 776 2 2,024.99