第三章 统计 SQL Server查询优化器在为查询选择执行计划时使用基于成本的模型.它估计不同执行计划的成本,并选择成本最低的一个.但是,请记住,SQL Server并不搜索可用于查询的最佳执行计划,因为评估所有可能的替代方案在CPU方面既费时又昂贵.查询优化器的目标是找到一个足够好的执行计划,足够快. 基数估计(在查询执行的每个步骤中需要处理的行数的估计)是查询优化中最重要的因素之一.这个数字会影响连接策略的选择.查询执行所需的内存量(内存授予)以及其他许多事情. 访问数据时要使用的索引的选…
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 55-58页 第三章 统计 SQL Server查询优化器在为查询选择执行计划时使用基于成本的模型.它估计不同执行计划的成本,并选择成本最低的一个.但是,请记住,SQL Server并不搜索可用于查询的最佳执行计划,因为评估所有可能的替代方案在CPU方面既费时又昂贵.查询优化器的目标是找到一个足够好的执行计划,足够快. 基数估计(在查询执行的每个步…
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 设计和优化索引 定义一种应用于所有地方的索引策略是不可能的.每个系统都是独特的,需要基于工作,业务需求和其他一些因素的自己的索引方法.然而,有几个设计的注意事项和指导方针可以被应用到每个系统. 在我们优化现有的系统时非常正解.虽然优化是一个迭代过程在任何时候都是独特的,但是有一组技术可以用来检测每个数据系统的效率低下. 在本章节,请记住我们将呈现一…
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 聚集索引 聚集索引指示表中数据的物理顺序,该顺序是根据聚集索引键排序的.表只能定义一个聚集索引. 让我们假设您希望在堆表上使用数据创建集群索引.作为第一步,如图2-5所示,SQL Server创建数据的另一个副本,然后根据集群键的值对其进行排序.数据页在双链表中链接,其中每个页面都包含指向链中的下一个和上一个页面的指针.这个列表称为索引的叶级,它包…
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生了什么,以及它是如何影响你的 第二版 数据页和数据行 数据库中的空间被划分为逻辑8KB页面.这些页面从0开始连续编号,可以通过指定文件ID和页码来引用它们.页面编号总是连续的,这样当SQL Server增长数据库文件时,新页面的编号将从文件中最高的页码加1开始.类似地,当SQL Server压缩文件时,它会从…
<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59.99装帧: PaperbackISBN: 9781484219638 统计 SQL Server查询优化器在为查询选择执行计划时使用基于成本的模型.它估计不同执行计划的成本,并选择成本最低的一个.但是,请记住,SQL Server并不搜索查询可用的最佳执行计划,因为评估所有可能的替代方案在CPU方面都是耗时…
<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59.99装帧: PaperbackISBN: 9781484219638 索引的设计与调整 索引不可能在任何地方都适用.每个系统都是独特的,并且需要基于工作负载.业务需求和许多其他因素的自己的索引方法.然而,有几个设计考虑和指导方针可以应用在每个系统中. 当我们优化现有系统时也是如此.虽然优化是一个迭代过程,在…
<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59.99装帧: PaperbackISBN: 9781484219638 聚集索引 聚集索引指示表中数据的物理顺序,该表根据聚集索引键进行排序.该表只能定义一个聚集索引. 假设您想用数据创建堆表上的聚集索引.作为第一步,如图2-5所示,SQL Server创建数据的另一个副本,然后根据集群密钥的值对其进行排序.…
设计和优化索引 定义一种应用于所有地方的索引策略是不可能的.每个系统都是独特的,需要基于工作,业务需求和其他一些因素的自己的索引方法.然而,有几个设计的注意事项和指导方针可以被应用到每个系统. 在我们优化现有的系统时非常正解.虽然优化是一个迭代过程在任何时候都是独特的,但是有一组技术可以用来检测每个数据系统的效率低下. 在本章节,请记住我们将呈现一些重要因素在设计新的索引和优化现有的系统时. 聚集索引设计注意事项 在你改变聚集索引键的值时,将会发生两件事.首先,SQL server移动行到聚集索…
数据页和数据行 数据库中的空间被划分为逻辑8KB的页面.这些页面是以0开始的连续编号,并且可以通过指定文件ID和页号来引用它们.页面编号都是连续的,这样当SQL Server增长数据库文件时,从文件中的最高页面编号+1开始对新页面进行编号.类似地,当SQL Server收缩文件时,它将从文件中删除最高数量的页面. SQL SERVER中数据储存 一般来说,有三种不同的方法或技术,SQL Server存储和处理数据库中的数据.与经典的基于行的存储,数据存储在数据行,将所有列的数据结合在一起. SQ…
书名 <SQL Server 2012 T-SQL基础教程> 图片 时间  2017-8 学习  每章后面有习题很适合我,看完写sql的能力有质的飞跃好书 http://tsql.solidq.com/…
<Microsoft Sql server 2008 Internals>索引文件夹: <Microsoft Sql server 2008 Internals>读书笔记--文件夹索引 在第五章主要学习了table的内部存储结构,第七章<Special storage>中将继续深入学习存储机制,那将是本书最难理解的一章. 第六章主要介绍index的基础知识,第八章是<query Optimizer>,以下我们先来看看第六章:Indexes:Internals…
<Troubleshooting SQL Server>读书笔记-CPU使用率过高(下) 第三章 High CPU Utilization. CPU使用率过高的常见原因 查询优化器会尽量从CPU,IO和内存资源成本最小的角度,找到最高效的数据访问方式.如果没有正确的索引,或者写的语句本身就会忽略索引, 又或者不准确的统计信息等情况下,查询计划可能不是最优的. 有些查询计划可能对只对某种条件下的查询是高效,而不是所有条件下都是. 缺失索引 索引的缺失,会导致查询处理的行数大大超出必要的行数,从而…
转载请注明出处 由于工作及学习需要,最近看了一下<Dissecting SQL Server Execution Plans>,这是少有的专门描述执行计划的优秀书籍,为了快速查找并供入门同行学习,粗略翻译了本书,并进行连载,由于专业及英语水平严重不足,所以建议有兴趣有能力的读者看原书,同时期待各位指出翻译不足.下载地址:点击打开链接 本文是一个总入口,方便阅读,共8章,由于篇幅较多,每章的每节独立成一篇博文,每翻译完一节就发布一节,敬请留意 第一章: 第一节:当查询提交时会发生什么事情 第二节…
<Microsoft SQL Server 2008 MDX Step by Step>学习笔记九:导航结构层次   SQL Server 2008中SQL应用系列及BI笔记系列--目录索引 导读:本文介绍MDX中的导航结构层次(Hierarchies).成员(Member)之间的关系可以用家族来描述.本文以此为基础,介绍了: ■1.访问直系亲属关系(Immediate Relatives) ■2.访问延伸亲属关系(Extended Relatives) ■3.在一个级别(Level)内导航…
Sql Server 2012 Enterprise Edition 企业版 迅雷 下载地址 版本号 cn_sql_server_2012_enterprise_edition_x86_x64_dvd_813295 序列号 MICROSOFT SQL SERVER 2012 ENTERPRISE COREFH666-Y346V-7XFQ3-V69JM-RHW28 MICROSOFT SQL SERVER 2012 BUSINESS INTELLIGENCEHRV7T-DVTM4-V6XG8-P3…
一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”.(首次安装数据库系统或向现有数据库系统添加功能,均选择此选项) 二.随后,安装程序进行“安装程序支持规则”的检测,来分析要成功安装SQL Server 2012 Enterprise Edition的前提条件是否都满足.如果存在某一个或多个条件(规则)没有通过,安装过程将无法进行,必须更正失败项才能继续.如果都满足(所有规则的状态为已通过)点击“确定”. 三.输入产品秘钥并点击“下一步”: 四.勾…
在阅读<Pro Asp.net core mvc 2>中有使用bower管理包,可能是由于vs2017或者bootstrap什么地方改变了,按照步骤进行操作,完全没有对应的样式出现.开始以为是浏览器不一致,换了浏览器还是一样的问题.才觉得可能是包的问题,原谅作为新手什么都不懂.再网上找了一下,发下还真是,bower新生成了一个bower_contents来存放对应的文件,并不在wwwroot下了.我就将文件再次移动到wwwroot,重新编译就可以了. 纪录一下,或许有其他人新手也会碰到这个问题…
- 页是 SQL Server 中数据存储的基本单位,大小为 8KB. - 区是空间管理的基本单位,8个物理上连续的页的集合(64KB). - 页的类型包括: 1. Data 2. Index 3. Text/Image 4. Global Allocation Map 5. Shared Global Allocation Map 6. Page Free Space, Index Allocation Map 7. Bulk Changed Map 8. Differential Chang…
第三章 High CPU Utilization. CPU使用率过高问题很容易被发现,但是诊断却不是很容易.CPU使用过高很多时候会成为其它问题的替罪羊,所以在确认和故障诊断时要抽丝剥茧. 调查CPU压力 三个主要的工具:性能监视器,SQLTrace,DMV. 性能监视器:首先用它来确认是SQL Server还是其它进程使用了过多的CPU.主要计数器有: Processor/ %Privileged Time :在特权模式下进程线程执行代码所花时间的百分比.基本可以认为是Windows核心使用的…
自调整的数据库引擎(Self-tuning Database Engine) 长期以来,微软都致力于自调整(Self-Tuning)的SQL Server数据库引擎,用以降低产品的总拥有成本.从SQL Server 2005开始,SQL Server就是动态管理内存使用,并且调整内存使用时,不需要重启数据库引擎. 所以它也不提供内存分配的微调项.各个组件的内存分配,完全由数据库引擎自动管理,不能手动分配.但是这货还是提供了一些配置项,能够影响数据库引擎如何使用内存. 是否使用这些配置项来替代默认…
Chapter 10 Programmable Objects 声明和赋值一个变量: DECLARE @i AS INT; SET @i = 10; 变量可以让你暂时存一个值进去,然后之后再用,作用域是同一个Batch(批处理). 也可以这么用: DECLARE @firstname AS NVARCHAR(10), @lastname AS NVARCHAR(20); SELECT @firstname = firstname, @lastname = lastname FROM HR.Emp…
Chapter 9 Transactions and Concurrency SQL Server默认会把每个单独的语句作为一个事务,也就是会自动在每个语句最后提交事务(可以设置IMPLICIT_TRANSACTIONS来改变此默认行为). 事务的四个属性: 原子性 Atomicity.遇到错误时,SQL Server通常会自动回滚事务(除了一些不太严重的错误比如主键冲突.尝试获取锁超时).(可以通过 @@TRANCOUNT 判断当前是否处于一个事务当中) 一致性 Consistency.指同时…
Chapter 8 Data Modification SQL Server 2008开始,支持一个语句中插入多行: INSERT INTO dbo.Orders (orderid, orderdate, empid, custid) VALUES (10003, '20090213', 4, 'B'), (10004, '20090214', 1, 'A'), (10005, '20090213', 1, 'C'), (10006, '20090215', 3, 'C'); 这个语句作为一个原…
Chapter 7 Beyond the Fundamentals of Querying window function是什么呢?就是你SELECT出来一个结果集,然后对于每一行,你都想给它对应一个标量(a scalar),而这个标量是通过a subset of rows计算得到的,而这个a subset of the rows其实就是你得到的结果集里面的一个subset(子集).所以说就是把每一行都对应a subset of the rows,而这个对应关系通过OVER指定.举个例子: SE…
Chapter 6 Set Operators 语法如下: Input Query1 <set_operator> Input Query2 [ORDER BY ...] 有ORDER BY子句的查询不会返回一个set,而会返回一个cursor.上面的ORDER BY是对整个运算后的结果而言的.两个查询必须有相同数量的列,而且数据类型要兼容(低级的数据类型能隐式地转为高级的数据类型),结果集中的列名是由第一个查询的列名决定的.而且两个查询都不能有ORDER BY,如果你想用TOP什么的话,可以…
Chapter 5 Table Expressions 一个表表达式(table expression)是一个命名的查询表达式,代表一个有效的关系表.SQL Server包括4种表表达式:派生表(derived tables).公用表表达式(common table expressions (CTEs),).视图(views).内联表值函数(inline table-valued functions (inline TVFs)).使用表表达式的好处通常在于逻辑层面而非性能. 派生表(derive…
Chapter 4 Subqueries 子查询分为:独立子查询(Self-Contained Subqueries)和相关子查询(Correlated Subqueries),独立子查询可以单独拿出来执行,相关子查询可以理解为对外部查询的每一行都执行一遍内部子查询. EXISTS谓词接受一个子查询,如果子查询能返回任何行,则返回TRUE,否则返回FALSE(注意到了吗?是two-valued logic).EXISTS后面用SELECT * 没关系,会被优化掉的. 返回前一个或者后一个值的解决…
Chapter 2 Single-Table Queries GROUP BY之后的阶段的操作对象就是组(可以把一组想象成很多行组成的)了,HAVING负责过滤掉一些组.分组后的COUNT(*)表示每组的行数.COUNT(*)会把包含NULL的行也数进来,比如有5行的一组数据是30, 10, NULL, 10, 10,列名叫qty,那么COUNT(qty)会返回4,而COUNT(*)返回5.可以SELECT DISTINCT,也可以在聚合函数中指定DISTINCT,例如:COUNT(DISTIN…
几个缩写的全称:Data Definition Language (DDL), Data Manipulation Language (DML), and Data Control Language (DCL). 以下三种范式我的理解就是规范,用来保证数据关系的正确性和减少冗余. 第一范式:表中的每一行必须是唯一的. 第二范式:首先必须满足第一范式.其次,想获得任何非键属性值,就必须提供"整个候选键"(候选键(candidate key)就是能唯一确定一行的一个或多个属性).例如:表O…