执行计划成本

本文探讨了SQLServer中表扫描与索引扫描的成本计算方法,分析了不同情况下执行计划的选择逻辑,包括表扫描、索引搜索及书签查找的成本评估,并讨论了影响执行计划选择的因素。

SQLServer执行计划成本

表扫描

当没有合适的索引时就发生表扫描操作。这可能意味着没有索引存在或者预期有很多行且比扫描整个表开销更少。如果表是一个堆表,执行计划显示表扫描操作;如果表有聚集索引或者所有需要的值都在一个非聚集索引里如图2-6显示,那么执行计划显示一个索引扫描操作。
 
2-6.表扫描的执行计划和聚集索引扫描操作
2-72-8显示表扫描和索引扫描操作的成本细节。索引扫描和表扫描有相同的成本结构。

2-7.表扫描的成本细节
 
2-8.聚集索引扫描的成本细节

通过检查表的一个范围的页和行的I/OCPU成本,执行计划成本规则如下:

I/O Cost = 0.0375785 + 0.000740741 per additional page


CPU Cost = 0.0000785 + 0.0000011 per row



I/O的基本成本(0.0375785)正好是6×0.0062500+0.0000785。通过任何平台(1P/2P/4P)观察到的表扫描成本组成没有任何变化。

索引搜索和表扫描的交叉点

每个表只能有一个聚集索引。为每个查询建立覆盖索引而不使用聚集索引总是不切实际的。那么执行计划里可能执行下面两个选项中的一个:1)一个带有书签查找的索引搜索,或者2)表扫描(或聚集索引扫描)。当从搜索参数里预期只有少量的行时,执行计划采用带书签查找的索引搜索。当预期有很多行时,执行计划采用表扫描。正确的理解执行计划在哪儿从一个变为另一个是有用的。

 

表扫描的成本通过表使用的页数和表总共的行数来决定。表扫描的成本不依赖于返回的行数(除非使用聚合函数)。索引搜索操作的成本仅依赖于返回的行数和选择行数所在的索引的叶页数,但不依赖于影响索引深度的表的绝对大小。书签查找操作的成本是由表的大小影响的(以不确定的倍数关系影响),但适当地与行数线性相关。

表扫描开销小于带有书签查找的索引搜索的交叉点是通过使两个执行计划成本规则相等来决定的。通过把在书签查找I/O成本的不确定的倍数作为修正因子(CF)且撇开小成本的组成部分,交叉点就能大概被确定了。

两个执行计划在固定的启动成本上的区别是1P/2P系统有大约5个书签查找而4P系统有11个。对于1P/2P系统每增加一个书签查找行的成本是0.0062511的一倍而4P系统是0.0031260的一倍,包括I/O成本和CPU成本。表扫描里每增加一页的成本是0.000740741+0.0000011×(每页的行数)。这样,交叉点遵循的规则大约和下面的相关:索引搜索条件涉及到的行数和表的页数,术语称为页行比(pages-to-rows ratio)和修正因子(CF)。页行比在表扫描增加的成本与一个书签查找的成本相等时简单的指页数。修正因子(CF)是书签查找成本的百分比。

Rows ~  5 + 页数 ÷ (CF×(页行比))  (1P/2P系统)

    ~ 11 + 页数 ÷ (CF×(页行比))  (4P系统)



既然表扫描里增加页的成本依赖于每页的行数,那么页行比就反映了每页的行密度。如图2-9所显示。

2-9.页行比对每页的行密度

例如,考虑平均密度为每页100行的一个表。对于1P/2P系统的页行比是7.35CF~0.90。对于一个有506页的表来说,预计的交叉成本大约在81.5行发生,实际是84行。换句话说,当要求书签查找的时候,查询优化器为了使用索引而非表扫描需要索引的可选择性好于表里每0.9×7.35页就有1行。也许在成本交叉点和计划事务点处有细微的不同。

2-10显示了索引搜索和被看作行功能的书签查找的执行计划成本和表扫描50000行每页99行的成本。表扫描的成本不依赖于返回的行。


2-10.50000行且每页99行的表的计划成本

2-11共同显示了对于1P/2P4P系统的索引搜索和作为行功能的书签查找计划的成本与表里计算页(假定每页100行)功能的表扫描的计划成本。为了比较也显示了作为行功能的覆盖索引搜索成本。如果知道页里表的大小,那么书签查找和表扫描的交叉点可以通过找到书签查找计划和表扫描有相同成本时的行数来决定,反之亦然。


2-11./页计划成本

由于在1P/2P系统和4P系统里索引搜索和书签查找成本的不同,在4P系统上要达到表扫描交叉点的书签查找量是1P/2P系统的大约2倍。假定有很多多处理器系统使用共享总线,那么4P系统比1P/2P系统延迟切换到高总线带宽操作如表扫描上似乎是合理的。这一点没有明晰的解释。

在有大量的行参与时,书签查找计划成本对于1P/2P系统来说是覆盖索引搜索的700多倍而4P系统是350多倍。在这个例子里,覆盖索引每页正好超过400行。

注意覆盖索引和表扫描在很少的行参与时计划成本非常平坦。这是因为增加行的成本相对于固定的索引搜索和表扫描的基本成本而言是很低的。事实上,基于1P/2P系统的成本规则而言增加800行的成本是覆盖索引搜索每页100行成本的两倍,4P系统是400行。在45页里4500行的表扫描成本是单行表扫描的两倍。
本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部二值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器学习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,学生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为学习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值