第一阶中我们描述了如何在Profiler中自定义一个Trace,并且让它运行在服务器端来创建一个Trace文件.然后我们通过Jonathan Kehayias的 sp_SQLskills_ConvertTraceToExtendedEvents存储过程,将Trace定义转换为创建Extended Events 会话的脚本.希望它为你建立起了一座由SQL Trace 通向Extended Events开始的桥梁.当然,它也提供了一个将已有SQL Trace库转换为Extend Events的有效途…
  SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的企业越来越少,但是日志传送也有自己的一些优点,有些特殊场景或业务背景下也有其存在的价值.最近由于特殊业务场景可能需要用到这个技术,所以做了一些测试和验证,比对一些知识做了一下总结.归纳.下面有部分内容从官方文档摘抄.此篇是总结性内容.如有不足,敬请指点! 日志传送(Log Shipping)介绍  …
开始采用Extended Events 最大的阻碍之一是需要使用Xquery和XML知识用来分析数据.创建和运行会话可以用T-SQL完成,但是无论使用什么目标,数据都会被转换为XML.这个限制在SQL Server 2012中已经被移除,它已经实现了Extended Events 用户界面.在SQL Server 2014中也基本没有变化,如我们在进阶2中所见,这个UI提供了创建和管理会话功能.在本阶中,我们将探索捕获数据的查看和处理的功能. 查看数据 当创建并启动会话后,我们有两种选择查看事件…
http://www.sqlservercentral.com/articles/Stairway+Series/134869/ SQL server 2008 中引入了Extended Events 用以替换SQL Trace. 然而在第一个版本中并没有为用户提供UI,因此使用Extended Events并不是很方便.SQL Server 2012及时修正了这一点,将UI管理工具集成在SSMS中, 这就意味着我们不需要再为了查询Event XML而学习使用XQuery了.因此跟多的DBA和开…
由于工作需要,决定深入研究SQL Server的扩展事件(Extended Events/xEvents),经过资料搜索,发现国外大牛的系列文章,作为“学习”阶段,我先翻译这系列文章,后续在工作中的心得作为原创添加.原文地址:Stairway to SQL Server Extended Events ,由于英语水平有限,如认为看原文更好,可以自行查阅.另外,在翻译过程中,我会适当增加一些自己的看法或者删除作者的某些我认为不重要.不影响学习的内容,所以不是纯粹的直译. 本系列目前包含4篇文章:第…
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 在第一二节中,我们创建了一些简单的.类似典型SQL Trace的扩展事件会话.在此过程中,介绍了很多扩展事件基础组件,包括事件.谓词.操作和目标.本节,将对扩展事件引擎.架构和基本组件做更加深入的了解.通过这些讲解,可以大概了解到为什么扩展事件相对于SQL Trace来说更加低开销.另外,还会延时如何设计事件会话从而最小化事件收集过程中的不必要开销,即使这些事件会话会很复杂. 事件数据收集生命周期: 扩…
本文属于 SQL Server扩展事件(Extended Events)从入门到进阶 系列 对于接纳扩展事件,其中一个最大的障碍就是要对XML和XQuery有一定的了解以便分析数据.我们可以使用T-SQL来完成创建和运行会话,但是不管会话的存在目的是什么,数据都被编译成XML.但是从SQL 2012开始就去除了这种限制.我们通过上一文中介绍的,可以用GUI对扩展事件进行创建和管理,同样,在本文中,我们演示如何在SSMS GUI中查看的操作捕获的结果数据. 查看数据: 当创建和启用扩展事件会话之后…
本文属于 SQL Server 扩展事件(Extented Events)从入门到进阶 系列 第一篇文章中提到了如何在Profiler中创建跟踪(trace),并以服务器端(server-side)跟踪方式运行以便在服务器上创建实际跟踪文件.接着把跟踪定义转换到扩展事件的CREATE EVENT SESSION脚本中. 上一篇文章可以成为你从SQL Trace通往扩展事件(Extented Events/xEvents,为后续编写方便,本人尽可能使用xEvents替代扩展事件)的桥梁.同时,上文…
SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范化 设计问题 规范设计 规范化和性能的关系 总结 1. 课程内容回顾及介绍 对于SQL Server基础,我们已经学习了SQL Server的相关概念和基本操作,包括创建库.创建表.添加约束和创建安全账户等. 掌握了对数据的增加(insert).删除(delete).修改(update).查询(se…
原文:[译]SQL Server索引进阶第八篇:唯一索引     索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其反,可以说"成也索引,败也索引".     本系列文章来自Stairway to SQL Server Indexes,翻译和整理后发布在agilesharp和博客园,希望对广大的技术朋友在如何使用索引上有所帮助.   唯一…
前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴趣的童鞋可以点击查看. 本篇介绍在SQL Server中查询优化器的工作方式,也就是一个好的执行计划的形成,是如何评估出来的,作为该系列的进阶篇. 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 正…
前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 利器一.IO统计 通过这个IO统计能为我们分析出当前查询语句所要扫描的数据页的…
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQL Server2008R2,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks 相信了解SQL Server的朋友,对这两个库都不会太陌生. 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化的统计信…
前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本篇我们就开始分析这块内容,关于索引的基础知识就不打算深入分析了,网上一搜一片片的,本篇更侧重的是一些实战项内容展示,希望通过本篇文章各位看官能在真正的场景中找到合适的解决方法足以. 对于索引的使用,我希望的是遇到问题找到合适的解决方法就可以,切勿乱用!!! 本篇在分析出索引的优越性的同时也将负面影响…
前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常维护以及一些注意事项等. 闲言少叙,进入本篇的主题. 技术准备 数据库版本为SQL Server2012,前几篇文章用的是SQL Server2008RT,内容区别不大,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks. 相信了解S…
前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴趣的童鞋可以点击查看. 本篇介绍在SQL Server中查询优化器的工作方式,也就是一个好的执行计划的形成,是如何评估出来的,作为该系列的进阶篇. 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 正…
原文地址: Stairway to SQL Server Indexes: Level 10,Index Internal Structure 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在之前的级别中,我们从逻辑的角度介绍索引,集中于它们能为我们做什么.现在,是时候从物理的角度,并且检查一下索引的内部结构,从理解索引的内部结构,引导我们理解索引在上层做的工作.通过索引的结构,它是如何维护的,你可以理解在进行插入,更新,删除的…
原文地址: Stairway to SQL Server Indexes: Level 9,Reading Query Plans 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在这个系列中,我们经常会以特定的方式执行特定的查询.我们引用生成的执行计划来支持我们的论调.SQL Server管理器显示的预估的和实际的查询计划,可以帮助我们确定索引的好处,以及其中的缺陷.因此,本文的主要目的是给你一些关于执行计划的充分的理解: 验证…
原文地址: Stairway to SQL Server Indexes: Level 8,Unique Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 本级别我们将测试唯一索引.唯一索引比较特别,不仅提高查询的性能,同时也带来数据完整性的好处.在SQL Server中,唯一索引是强制主键和候选键约束的唯一合理的方法. 唯一索引和约束 唯一索引不同于其他索引,入口不允许有相同的索引键值.因为索引的每个入口都会映射表…
原文地址: Stairway to SQL Server Indexes: Level 7,Filtered Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在之前的级别中,我们已经说过,表中的每一行在索引中会生成一个入口,这条规则有一个例外.一些索引的入口会比对应的表的行数要少.这些索引被称作“过滤的索引”,是SQL Server 2008中的一个特性. 过滤一个索引 创建一个包含where子句的过滤的非聚集索引…
原文地址: Stairway to SQL Server Indexes: Level 6,Bookmarks 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在前面的章节中我们看到了,索引就是一些有序入口的集合,每行一个入口.我们更多的强调索引的逻辑方面,而不是物理方面.当目前为止,我们讲述了非聚集索引入口的两个组件:查询键和包含列.在本章中,我们介绍第三个,也是最后一个组件:标签. 什么是标签 标签在之前已经提到过,但只是说S…
原文地址: Stairway to SQL Server Indexes: Level 5, Included Columns 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 之前的文章介绍了聚集索引和非聚集索引,包含下面几条很重要的内容: 表中的每一行在索引中总是有一个入口(这条规则有一个意外,在后面的级别中我们会讲到).这些入口总是用索引键排序. 在聚集索引中,索引的入口就是表的实际行. 在非聚集索引中,入口和数据行是分开的,…
原文地址: Stairway to SQL Server Indexes: Level 4, Pages and Extents 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在之前的级别中,我们分别在有索引和没有索引的表中执行查询,比较了他们需要做的工作.我们的主要度量标准是“login read逻辑读”.我们总是比较在有索引和没有索引的表执行查询的逻辑读.现在,是时候解释为什么“逻辑读”是一个优秀的度量标准,同时也解释了实际…
原文地址: Stairway to SQL Server Indexes: Level 3, Clustered Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在这个进阶系列的前一级中介绍了索引的大概信息,以及详细介绍了nonclustered indexes非聚集索引.SQL Server的索引包含一些关键的概念. 当一个请求到达数据库的时候,有可能是select,或者insert,或者update,或者del…
原文地址: Stairway to SQL Server Indexes: Level 2, Deeper into Nonclustered Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 在第一级中介绍了SQL Server中的非聚集索引.而且在第一个学习的例子中,我们证明了在从表中获取一行数据的情况下,索引带来的潜在的好处.在这一级中,我们继续介绍非聚集索引,看看他们在提升查询性能中做出的贡献. 我们先来介绍…
这个并不是我翻译的,全文共有15篇,但我发现好多网站已经不全,所以自己整理. 原文地址: Stairway to SQL Server Indexes: Level 1, Introduction to Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Server Indexes)的一部分. 索引是数据库设计的基础,向开发者显示了使用数据库大量数据库设计者的意图.不幸的是,索引大部分时候是在出现性能问题的时候,才被事后添加上的. 第一级介绍一下SQL Se…
本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本文将更加深入地讲解WSFC所需的核心组件.由于AlwaysOn和FCI都需要基于WSFC之上,因此我们首先要了解在Windows群集发生了什么.不仅可以优化SQL Server的高可用设计和部署高,也可以为后续问题侦测过程提供支持. 本节将涉及以下内容: Windows Server Active Directory Domain(Windows Server活动目录域) DNS Server DHCP Server…
本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程中对存储的利用建议.当然,重点还是集中在对于一个标准的AlwaysOn可用组配置过程中,对存储的选择和配置上面. AlwaysOn的部署首先建立在一个Windows Server Failover Cluster(WSFC)上.并且每个服务器通常有一个独立的SQL Server实例.另外,每个服务器…
本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Server AlwaysON从入门到进阶(1)--何为AlwaysON? SQL Server AlwaysON从入门到进阶(2)--存储 SQL Server AlwaysON从入门到进阶(3)--基础架构 SQL Server AlwaysON从入门到进阶(4)--分析和部署Windows Ser…
原文链接:传送门. 为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识. 当我们讲解这些信息的时候,记住本节背景部分提到的内容,仅当你的应用是进行索引扫描时,碎片是不被期望的(不管是索引的完全扫描还是部分扫描).当你的应用程序仅仅返回一个索引键值的少量数目的条目时,碎片其实并不是个问题.如同列表3所示的5行数据的查询. SELECT * FROM Sales.SalesOrder…