今天高老大出了好文章.在这里 自己本来对这一块比较混乱,正好借这个机会学习一下. 就用高老大的脚本.需要的直接去他那里找吧,这里就省了. 加查询优化标记前后对比 可以看到GrantedMemory是504928KB,大约是213096/1024=208.101562MB(这里的那个值好像每次都有差别,但是差距不太大.不影响效果) 加上跟踪标记后 4560/1024大概只有4MB吧. 差别很大吧~ 其实这里这些值还可能通过查询计划的XML里看,里面有更详细的信息. 如 <QueryPlan Deg…
我们有时会遇到一些坑,要不填平,要不绕过.这里为大家介绍一个相关SQL Server优化器方面的特性导致内存授予的相关BUG,及相关解决方式,也顺便回答下邹建同学的相关疑问. 问题描述 一个简单的查询消耗了匪夷所思的内存.(邹建同学发现的) 原文链接 Code create table test_mem ( id ,) primary key, itemid int not null, date datetime not null, str1 varchar(max) null ) INSERT…
我们都知道,一条SQL语句提交给优化器会产生相应的执行计划然后执行输出结果,但他的执行计划是如何产生的呢?这可能是关系型数据库最复杂的部分了.这里我为大家介绍一个有关SQL Server优化器的特性-隐式谓词,并简单介绍在此特性下如何根据场景控制优化器的行为. 在这里我通过一个简单的实例来给大家说明下. code CREATE TABLE T1 (A INT, B INT) CREATE TABLE T2 (A INT, B INT) set showplan_text on SELECT *…
前段时间我写的文章SQL Server 隐式转换引发的躺枪死锁 中有的朋友评论回复说在SQL2008R2测试时并未出现死锁,自己一测果然如此,因此给大家带来的疑惑表示抱歉,这里我就解释下其原因. 回顾:SQL2012中发生死锁的原因已经向大家解释了,因为隐式转换造成的表扫描扩大了锁规模.但在SQL2008R2中就未有同样的现象出现,很显然锁规模没有扩大,原因在于SQL Server的优化器为我们做了额外的事情-动态检索 动态检索:基于索引查找的优势,SQL Server(部分版本)会尝试将一些情…
http://www.cnblogs.com/shanksgao/tag/%E4%BC%98%E5%8C%96%E5%99%A8/ http://www.cnblogs.com/double-K/category/759248.html http://www.cnblogs.com/zhijianliutang/category/636063.html http://www.cnblogs.com/lonelyxmas/p/4685085.html       stack生成          …
SQL Server优化的方法<一>   查询速度慢的原因很多,常见如下几种:   1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)   2.I/O吞吐量小,形成了瓶颈效应.   3.没有创建计算列导致查询不优化.   4.内存不足       5.网络速度慢   6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)   7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)   8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源.…
基数评估 目录 基数评估 说明 基数评估准确的重要性 模型假设 启用新的基数评估 验证基数评估的版本 在迁移到新的基数评估前要测试 校验基数评估 偏差问题 需要手动处理的变化 避免因为新的CE造成性能下降 SQL Server 2014中的修改 增加多个谓词的相关性的假设 修改超出统计信息范围的评估 Join评估算法修改 Join包含(Containment)假设的修改 不同值计数评估的变化 诊断输出 新基数评估的调优方法 修改数据库兼容级别 使用跟踪标记 基础调优方法 说明 查询优化器的目的是…
一.结合实际,谈索引使用的误区 理论的目的是应用.虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析.下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法. 1.主键就是聚集索引 这种想法笔者认为是极端错误的,是对聚集索引的一种浪费.虽然SQL SERVER默认是在主键上建立聚集索引的. 通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1.我们的这个办公…
1.背景 SQL Server配置管理器可用来管理与SQL Server相关联的服务.配置SQL Server使用的网络协议以及从SQL Server客户端计算机管理网络连接配置.但是win10从1709升级到1803,升级成功后发现SQL SERVER配置管理器找不到了,以为又是win10给我删除了文件,搜索了下发现有人与我同样的问题,解决方案如下. 2.解决方案 2.1.可以通过:计算机-->右键-->管理-->服务应用程序,但是我不太喜欢点击这么多次鼠标. 2.2.通过[运行]调出…
在前阵子写的一篇博文"SQL SERVER 2014 下IF EXITS 居然引起执行计划变更的案例分享"里介绍了数据库从SQL SERVER 2005升级到 SQL SERVER 2014后,发现一个SQL出现性能问题,当时分析后发现执行计划变了,导致SQL出现了性能问题.但是没有彻底搞清楚为什么出现这种情况.当时看到Actual Number of Rows 与Estimated Number of Rows之间的偏差较大(统计信息是最新的),以为是优化器的Bug造成的.其实罪魁祸…