摘要:
SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 SQL Server代理作业有一系列的一个或多个作业步骤组成。一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类。每个作 阅读全文
摘要:
作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题。我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在一切已经改变,SQL Server开始糟糕, 疯狂的事情不能解释。在这个情况下我介入,分析下整个SQL... 阅读全文
摘要:
SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 SQL Server代理是SQL Server作业调度和报警服务,使用得当的话,会大大简化数据库管理员(DBA)的工作。 SQL Server 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。对于在我们关注下的所有数据库,在日志维护方面,我们的首要目标是最... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。对于日志文件的最大日志吞吐量,我们从存储架构思路的简单回顾开始,... 阅读全文
摘要:
在今天的文章里,我想谈下SQL Server里一个非常有趣的话题:在表联接里,把表指定顺序的话是否有意义?每次我进行查询和性能调优的展示时,大家都会问我他们是否应该把联接中的表指定下顺序,是否会帮助查询优化器得出一个更好性能的执行计划。我们来看下这个重要又有趣的问题。合并联接(Inner Joins... 阅读全文
摘要:
在今年的8月份,我写了篇文章,介绍了我还不推荐用户使用内存OLTP的各个理由。近日很多人告诉我,他们有一些性能的问题,并考虑使用内存OLTP来解决它们。众所皆知,在SQL Server里内存OLTP是个非常特别的技术,在很多情况下并不适用,但这是在SQL Server 2014里的首次实现,它有很多... 阅读全文
摘要:
几个星期前,SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0)。这个预览版相比以前的CTP包含了很多不同的提升。在这篇文章里我会谈下对于SQL Server 2016,TempDb里的显著提升。TempDb定制在SQL Server 2016安装期间... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。这篇文章会列出导致事务日志过度增长的常见的问题和错误管理形式,包... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。这个标题有点用词不当,因为运行在大容量日志恢复模式里的数据库,我... 阅读全文
摘要:
我们每个人都知道是个不好的做法,但有时我们还是要这样做:我们执行SELECT * 语句。这个方法有很多弊端:你从你的表里返回每个列,甚至后期加的列。想下如果你的查询里将来加上了VARCHAR(MAX)会发生什么……对于指定的查询,你不能定义覆盖非聚集索引来克服执行计划里的查找(lookup)运算符,... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。在这篇文章里,我们会回顾下当运行在完整恢复模式时,为什么和如何进... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。这个标题近乎是用词不当,因为很大程度上,运行在简单模式里不需要日... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。它不会经常提起,除非你的数据库运行在简单(SIMPLE)恢复模式... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。虽然我们想回避它,去讨论下事务日志的内部结构和内部运行机制,但适... 阅读全文
摘要:
在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作。假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原整个数据库。我们来破坏一个页第一步我想向你展示下如何建立表(或索引)里有个特定页损坏的情景,这里我们... 阅读全文
摘要:
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的。你只要确保每个数据库都有正确的备份。当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时。这系列文章会告诉你每个DBA应该知道的具体细节。事务日志是存储对应数据库所有事务和数据修改记录的文件(每个数据库... 阅读全文
摘要:
哇哦,光阴似箭!欢迎回到性能调优培训的最后一期。今天我会详细讲下SQL Server里的数据库维护,尤其是索引维护操作,还有如何进行数据库维护。索引维护作为一个DBA,数据库维护是你工作中非常重要的一部分,让数据库获得最佳性能。一个SQL Server数据库就像一辆车:它需要经常的检查来保证运行没有... 阅读全文
摘要:
在今天的性能调优培训里我们讨论下TempDb——SQL Server的公共厕所,在SQL Server里我是这样描述它的。我们的每个人都会经常使用TempDb。有些人直接使用它,有些人不直接使用它。今天我想给你概括介绍下SQL Server里TempDb的用法,另外我会给你为了更好的性能,如何配置T... 阅读全文
摘要:
今天我想谈下一个非常“简单”的话题:如何阅读执行计划。首先,这个看起来是非常简单的问题,但是当你看看的答案的细节时,它可是令人惊奇的。有2种方式阅读执行计划——从右到左,和从左到右。我们来详细看下,哪个才是正确的……从右到左?在SQL Server里,当你开始和执行计划打交道时,你总听到推荐:你应该... 阅读全文
摘要:
几天前,我写了篇SQL Server里简单参数化的痛苦。今天我想继续这个话题,谈下SQL Server里强制参数化(Forced Parameterization)。强制参数化(Forced Parameterization)在SQL Server里简单参数化有很多限制,如果你的SQL语句包含下列任... 阅读全文
摘要:
大家好,欢迎回到性能调优培训的第22周。上周我谈了SQL Server里的基线,今天我们继续,谈下SQL Server里的等待和I/O延迟统计。当我进行SQL服务器健康检查时,我总会使用这2个维度全局掌握下SQL Server的健康状况。等待统计(Wait Statistics)在SQL Serve... 阅读全文
摘要:
你的SQL语句的参数化总是个好想法。使用参数化SQL语句你不会污染你的计划缓存——错!!!在这篇文章里我想向你展示下用参数化SQL语句就可以污染你的计划缓存,这是非常简单的!ADO.NET-AddWithValueADO.NET是实现像SQL Server关系数据库数据访问的.NET框架的组成——有... 阅读全文
摘要:
今天我想谈下SQL Server里的针对即席工作负荷进行优化(Optimize for Adhoc Workload)服务器配置选项,还有它如何影响你的计划缓存。在我们挖掘细节之前,我想向你展示下SQL Server如何重用缓存的执行计划。执行计划重用每次你提交一个查询给SQL Server,SQL... 阅读全文
摘要:
在今天的文章里我想谈下SQL Server里非常重要的话题,当人们第一次使用SQL Server时是最会混淆的。即主键约束(Primary Key constraint)和聚集索引(Clustered Index)的区别。什么是主键(Primary Key)首先让我们谈下主键约束本身。顾名思义它只是... 阅读全文
摘要:
在今天的文章里,我想向你展示下SQL Server里一个未公开的函数,还有你如何用那个函数来找出在哪页记录被存储。%%lockres%%今天我想向你展示的未公开函数叫做%%lockres%%,它与SQL Server的锁实现有关。我们都知道,SQL Server实现锁层级并在记录层,页层,表层请求锁... 阅读全文
摘要:
一些人总当NOLOCK查询提示是SQL Server里的加速器,因为它避免了大量的死锁情景。在这篇文章里,我想向你展示下为什么NOLOCK查询提示是个不好的想法。脏读(Dirty Reads)NOLOCK查询提示一个最大的副作用就是在你的记录集会出现所谓的脏读这个事实。我们来看下面的代码:1 BEG... 阅读全文
摘要:
问:使用NC扫描运算符,有方法知道索引是怎么扫描的么?这个问题的一个答案是非聚集索引扫描总是扫描整个索引。答:是的,总是100%。扫描运算符总是整个索引……但是有一些特定的情况并不是这样。在这篇文章里我想专门讲下你总会碰到的一个特定案例——在你的查询里有TOP,MIN或者MAX表达式。TOP,MIN... 阅读全文
摘要:
大家好,欢迎来到性能调优培训的最后一个月。在过去的5个月里,我们谈了SQL Server的各种性能相关的话题,包括性能调优的技术和问题。但当在你面前,SQL Server没有按你预想的运行时,你会怎么办?为了帮你处理这个情况,今天我们会谈到下性能监控技术,下周我们会详细谈到SQL Server里所谓... 阅读全文
摘要:
在今天的文章里,我想谈下SQL Server里非常有争议和复杂的话题:ORDER BY子句的歧义性。视图与ORDER BY我们用一个非常简单的SELECT语句开始。1 -- A very simple SELECT statement2 SELECT * FROM Person.Person3 OR... 阅读全文