《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(9)

[SQL优化工具]Quest.Central.For.Databases——SQL Tuning for SQL Server 随着企业数据库的急剧膨胀和日益复杂,DBA为保证数据库性能所付出的努力与日俱增,手工或使用多种无法集成的管理工具,都会给日常管理和维护带来不必要的困难。 Quest Central for Databases 是一种集成化、图形化、跨平台的数据库管理解决方案,可以管理异构环境下的 Oracle、DB2 和 SQL server 数据库。Quest Central for Databases 阅读详情
《Microsoft Sql server 2008 Internals》索引目录:

《Microsoft Sql server 2008 Internals》读书笔记--目录索引

 

本文继续关注分区表(Partitioned Tables) 和数据仓库(Data Warehousing)

SQL Server 2005针对分区表的并行查询的执行有一个局限性。APPLY操作符的使用在对扫描每个交互的分区时有限制,即允许SQL Server 2005对每个表只允许一个线程。虽然也允许并行查询。但大多数情况下还是被忽略了。而且,APPLY模式不考虑分区的大小差异,仍然使用一个线程处理一个最大或最小的分区。

查询优化器在分区琢计划生成时改善了端对端体验。代表分区表的能力使访问分区表和非分区表的差异已经最小化。特别,可参考的并行计划集更加连贯。查询执行组件会动态调整每分区使用一个或多个线程,以便更高效地执行查询。

在SQL Server 2008中,连接协作仍使用apply/nested loops join表示,但其他的案例使用传统表示。

邀月工作室

邀月工作室

尽管SQL Server 2005在查询计划中暴露了分区ID,但SQL Server 2008在视图中极大隐藏了它。

■数据仓库(Data WareHouseing)

SQL Server包括一些特定的优化以加速数据仓库的查询。数据仓库,其实就是一个大的事实数据和一些小的维度数据表和一些事实表引用的明细信息。即所谓的星型架构和雪花型架构。

 数据仓库通常尽力使事实表的每行尽可能小。大的数据,比如字符串,被移走到维度表以消减行内空间。当针对数据仓库作优化时,重要的是不到必要时不扫描事实表。SQL Server能辨识星型和雪花型架构。应用特殊的优化以改善查询性能。首先,SQL Server在数据仓库中排序不同的连接尽量使得扫描事实表前先执行一系列针对维度表的限定操作。 SQL Server 2008也包含针对(帮助减少并行查询时跨线程的数据移动的)位图操作的改进。位图可能会被消减会一个位(bit)。

■Updates
Updates在查询处理中是一个有趣的区域。不仅优化了传统的select查询,而且Updates优化也考虑物理优化比如在每行中多少索引需要被touch,进程是在一段时间内更新还是立即更新,尽可能快的处理变化而避免不必要的死锁等等。

在这部分,我们将要讨论有关的优化。Update处理实际上包含了改变数据的顶级命令(top-level),Insert,Update,Delete,还有SQL Server 2008新增的Merge。SQL Server几乎一视同仁地对待这些命令。SQL Server中每个Update查询由如下的基本操作组成:

1、决定什么行将被改变(Inserted,updated,deleted,merged)

2、计算任何改变列的新值

3、应用变化到表和任何非聚集索引的结构。

下面的例子显示了Insert操作的查询计划:

邀月工作室

  注意:Insert查询有一个运算符叫常量扫描(Constant Scan),一个常量扫描在关系代数学中是一个特殊的运算符,它不从表中读取数据而生成行。如果正在往表中插入新行,实际上表中并不存在该行。因此,这个运算符(Constant Scan)创建一个Insert操作来处理(在这个处理过程中,实际上新行并没有被插入)。计算标量操作计算这些值到Inserted中。在上例中,这是一个常量,但实际中可能是任何随意的标量表达式或标量子查询。最后,Insert操作物理地更新主键--聚集索引。

 下面的例子显示了Update操作的查询计划:

 邀月工作室

 Update查询从聚集索引中读取值,执行一个Top操作,更新相同的聚集索引。这个Top操作实际上是一个处理ROWCOUNT的容器。除非在会话中执行一个set Rowcount  N操作,这个Top必须执行。同时注意本例中,更新命令并没有修改键值到聚集索引。因此,索引中的行并不需要在索引中移动。最后,似乎并没有一个操作符计算新值5到col2。这是错误的!事实上,它被处理了,只是有一个物理优化分解这个命令到Update中去处理了。如果你检查update属性,实际上,查询被直接自动参数化并且目标值被直接提供给了Update操作。

  下面的例子显示了Delete操作的查询计划:
邀月工作室
我们看到,Delete查询和Update查询非常类似,真实区别是:行最终被删除了。最原始的区别是一个where子句被作为一个条件应用到原始表的Seek操作。
需要注意的是:SQL Server对于物理表和索引生成不同的查询计划。我们看一个简单的例子:


邀月工作室

而当一个表是Heap(即没有聚集索引的表时),一个特殊的优化会把操作分解为更小的形式。这称为简单更新(Simple Update,这里的Update包括insert,update,delete,merge计划),它明显加快了速度。但注意仅对Heap有效。
我们看一个Heap例子:

邀月工作室
请注意这个查询更新了所有的索引。因为一个新行被创建了。然而,在上图中为什么只有一个操作呢?原来,实际的更新操作都在一个操作中了,如下图:

邀月工作室

 另外一个用于改善通用update场景的物理优化是:all-in-one或per-row操作。

我们试着更新,但不更新所有的索引。

邀月工作室

 结果,查询变复杂了,查询在表扫描操作中扫描Heap,执行RowCOUNT top,两个计算标量,一个表更新。此时,查看Update的属性,可以看到只更新i2,i3索引。两个计算标量一个是计算新的值,另一个也是一个物理优化以帮助确认每行是否需要更新,每个索引是否需要更新。SQL Server内置一套机制,包含了处理非更新的Update。即如果表或索引没有变化,则某些列无需更新。

后面几篇将继续关注SQL Server的update计划机制。

邀月注:本文版权由邀月和优快云共同所有,转载请注明出处。
助人等于自助!   3w@live.cn

    

 

 

手把手教你用STM32实现三相永磁同步电机FOC控制(附代码) 本文详细介绍了基于STM32的三相永磁同步电机(PMSM)FOC控制实现方法,涵盖硬件设计、软件架构、参数调试及完整代码解析。通过磁场定向控制(FOC)算法,实现高效精准的电机控制,适用于工业自动化、电动汽车等领域。文章还提供了硬件选型建议、电流采样方案对比及PID参数整定技巧,助力开发者快速掌握FOC控制技术。 阅读详情

相关推荐

Unity3D用c#脚本调用前端javascript函数:H5获取unity - webgl 加载并初始化完成的消息

unity3d发布的Webgl 可以作为静态文件加载到H5页面中,并通过javascript 调用unity内置的C#脚本函数,详见Webgl调用unity api。而往往我们需要知道Webgl ready的消息,本文将给出unity 内部调用javascript函数的方案加以解决。

Bravo 2475

sqlservice 事物 以及acid原则,隔离级别,脏读,幻读,不可重复读等

原 本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有wordlink_affiliate">SQL Server 事务和事务的隔离级别做基础铺垫。所以花了点时间,把<span class="wp_key<a href=" http:="" www.it165.net="" edu="" ebg="" "="" target="_blank">word

JJYY778899的专栏 1310

ElasticSearch 集群安全加固实战:从零配置TLS证书与密码认证

本文提供了一份详尽的ElasticSearch集群安全加固实战指南,重点介绍了如何从零开始配置TLS证书与用户安全认证。通过分步讲解证书生成、节点配置、集群重启及密码设置,帮助管理员为ES集群构建通信加密与访问控制的双重防线,有效提升数据安全性与合规性。

weixin_29323493的博客 444

又谈 SQL Server Performance

SQL Server Statistics and Cost Estimation统计信息(Statistics)会干扰查询优化器(Query Optimizer)生成最优的执行计划。它存储的是表列或者索引列的数值分布统计,也称为柱状统计Histogram。统计信息的过期或者不充分,都能导致优化器评估成本模型(Cost-Based Estimation)失效。

wujiandao的专栏 1万+

【社区分享】从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)

本文来自社区投稿与征集,作者王玉成,ML&IoT Google Developers Expert,温州大学智能锁具研究院总工程师。 了解更多:https://blog.youkuaiyun.com/wfing 经过前面几章的讨论,我们了解了TinyML 的概念,完成了一个最简单的TinyML 的模型并且运行在微控制器上,得出最基本的结果。但是在实际的工程应用中,模型建立之后,也需要再进一步结合许多优化方面的技术,这就是我们接下来想要探讨的。 5. 优化 TinyML 这本书也详细的向我...

tensorflowforum的博客 1万+

数据仓库实践:从ITR流程讲指标体系建设

从 ITR 流程或者其他客服反馈流程的考核过程可见,实际工作中不可能只通过单个指标评价一个业务过程,需要从多个维度梳理业务,并把多个高度相关的指标组织起来,以避免只考虑其中某个指标从而摧毁整个业务过程的结果,指标体系=指标+体系。

the_singing_towers的博客 2265

《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(1)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在第五章主要学习了table的内部存储结构,第七章《Special storage》中将继续深入学习存储机制,那将是本书最难理解的一章。第六章主要介绍index的基础知识,第八章是《query Optimizer》,下

邀月周记 2991

基于强化学习的工业SCR脱硝系统控制算法设计与实现

本文提出了一种基于强化学习的工业SCR脱硝系统智能控制方法。针对SCR系统存在的非线性、大滞后和多变量耦合等控制难点,研究采用混合建模方法构建了精度在5%以内的系统模型,并设计了专门的强化学习环境。该方法通过定义合理的动作空间和状态空间,结合物理约束设计损失函数,利用深度强化学习算法优化氨喷射控制策略。相比传统PID控制,该智能控制器能更好地适应烟气参数波动,实现NOx排放的稳定控制,为工业环保设施提供了更优的自动化解决方案。

huanghm88的专栏 1456

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(6)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上篇主要介绍了筛选统计和字符串统计、基线估计,本文将关注Limitation和Costing■限制(limitation) SQL Server的基线估计通常是很棒的。不幸的是,制作一个适合所有应用程序的每一个查询的完美

邀月周记 1749

YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新的ELA注意力机制,并构建C2PSA_ELA

为了解决这些限制,本文介绍了一种高效的本地注意力(ELA)方法,实现了一个简单的结构,大幅度的性能改善。我们精心设计了ELA中的三个超参数,产生了四个不同的版本:ELA-T,ELAB,ELA-S和ELA-L,以满足不同视觉任务的具体要求,如图像分类,目标检测和语义分割。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 1284

YOLO26剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps!

针对没有如何去选择剪枝的内容LAMP是层自适应幅度调整剪枝,无需任何参数,通过算法内部自己计算每个层的重要程度进行剪枝。基于权重重要程度和该层权重大小关系,权重越大表明该层越重要的思想进行优化。这个跟我前面说的非结构化全局剪枝是一个解法(MP),也就是lamp是在我前面那个非结构化剪枝的基础上进行优化的。但是这个逐层进行非结构剪枝目前还没有一个清晰的概念,确定每个层要剪枝多少。LAMP得分是一个平方权重大小,由层中所有“幸存权重”的总和归一化。

m0_64661770的博客 673

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(7)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引前几篇主要介绍了查询结构优化中的几个关键概念:统计(Statistics)、基准估计(Cardinality estimation)和成本(costing) ,今天开始真正进入主题:今天我们关注的是:索引选择■Index

邀月周记 2125

Oracle EBS Interface/API(29) - AP发票API

续上编文章《Oracle EBS Interface/API(28) - 客制化开发AP付款API》背景,介绍如调用官方提供标准AP发票API调用 用户界面 Invoices(Payables Manager->Invoices->Entry->Invoices) Open Interface Invoices(Payables Manager->Invoices->Entry->Open Interface Invoices) 快速参考 参考点 内容.

陈显平的专栏-Oracle EBS 1149

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(8)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引 本文继续了解索引视图(Indexes View) 关于索引视图的基本概念,可以在MSDN了解:http://msdn.microsoft.com/zh-cn/library/ms188783.aspx 注意:虽然索引视

邀月周记 2493

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(10)

《Microsoft Sql server 2008 Internal》读书笔记--目录索引今天我们继续学习三个有关计划更新的概念:Halloween Protection、Split/Sort/Collapse和Merge■Halloween Protection(Halloween保护,万圣节面具?呵呵)  Halloween保护描述了关系数据库中用于保证更新计划正确性的一种功能。这个功能的需

邀月周记 3227

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(1)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引SQL Server内置的查询优化器负责对一个给定的SQL语句执行判断作出最合理的查询计划。因为查询优化器并没有过多的内容展示于外界,因此不像SQL引擎中的其他组件那样为人熟知。第八章(The Query Optimiz

邀月周记 2531

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(2)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文主要介绍了查询优化的入门基础和查询优化器如何浏览查询计划中的规则和属性。现在我们继续来了解查询可选计划的存储和操作符如(计算标量、计算序列等)。■可选计划的存储-the "Memo"查询优化器包含一种避免存储重复信息

邀月周记 1995

《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(3)

《Microsoft Sql server 2008 Internals》索引目录:《Microsoft Sql server 2008 Internals》读书笔记--目录索引上文主要介绍了查询可选计划的存储和操作符如(计算标量、计算序列 等)。现在我们继续来了解优化架构。查询优化器包含了许多执行特定功能的优化的相(phase)。不同的Phase帮助查询优化器在优化进程的最早阶段“最高值”的操

邀月周记 2493
上一篇: 《Microsoft Sql server 2008 Internals》读书笔记--第八章The Query Optimizer(8)
下一篇: 《Microsoft Sql server 2008 Internals》读书笔记--第九章Plan Caching and Recompilation(1)
downmoon
博客等级 码龄24年 1676粉丝 494原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值