SQL Server 2012的内部原理和故障排除
文章平均质量分 78
Burgess_Liu
这个作者很懒,什么都没留下…
展开
-
在虚拟环境中运行SQL Server
虚拟化数据库服务器设计内存翻译 2014-07-11 10:29:25 · 2942 阅读 · 0 评论 -
使用SQLdiag合并数据采集----初识SQLdiag
SQLdiag是一个收集SQL Server实例诊断数据的多用途实用工具,可以以控制台应用程序或服务的形式运行。SQLdiag能够通过配置管理器的可扩展接口帮你收集SQL Server Profiler追踪,Windows Performance Monitor日志,并输出不同的VBScript、T-SQL、及DOS scripts。SQLdiag收集的数据可以通过SQL Nexus导入SQL S翻译 2014-03-20 11:23:39 · 3008 阅读 · 0 评论 -
使用SQL Nexus整合----熟悉SQL Nexus
SQL Nexus是一个用于将SQL Trace数据、性能监视日志及T-SQL输出整合进一个单独的SQL Server数据库的工具。这章解释如何将SQLdiag收集的数据导入到一个SQL Server数据库,然后借助SQL Nexus里已存在的报表来分析它。SQL Nexus是一个免费的工具,可以从Microsoft CodePlex网站下载。SQL Nexus使用3个组件:RML Uti翻译 2014-04-16 23:08:27 · 5107 阅读 · 0 评论 -
使用Perfmon和PAL工具查看Server性能--其他PerfMon日志性能分析工具
这节评估评估管理、操作及翻译PerfMon日志的常见工具。由于PerfMon日志能够被保存或转换为逗号间隔值(comma-separated value (CSV))文件,因此有很多选项可以用于数据分析,包括把文件装载到SQL Server,或用Excel分析,或几乎任何其他数据操作工具。使用SQL Serve分析PerfMon日志当通过其他方法分析数据麻烦且耗力时,使用SQL Serve翻译 2014-03-05 20:59:18 · 5786 阅读 · 0 评论 -
使用Perfmon和PAL工具查看Server性能--日志的性能分析(PAL)
PAL(Performance Analysis of Logs)工具是一个免费的实用工具,用于分析PerfMon计数器日志,并产生报告,该报告根据严重性突出重要的区域。报告用颜色标记计数器,依次来展示问题区,这些问题是基于微软支持团队的主题专家定义的阈值。PAL通过自动分析、快速突出潜在问题区为你节省大量时间。PAL 入门指南PAL可以从微软的开源社区项目、CodePlex中获取,它能够翻译 2014-03-05 17:13:30 · 5059 阅读 · 0 评论 -
使用Perfmon和PAL工具查看Server性能--从性能监视器获得更多有用信息
这节着眼于硬件、OS和SQL Server瓶颈,按照问题可能性的排序:内存、磁盘 和CPU,介绍主要的组件。你也会学习SQL Server性能计数器,用以规划使用PerfMon来识别特殊的SQL Server问题条件。瓶颈和SQL Server瓶颈是指资源严重制约数据库性能。总会有这样那样的瓶颈------目标是确保没有单个组件严重延迟整个事务处理系统。这节将审查一些不同类型的瓶颈,并提供翻译 2014-03-05 15:54:58 · 3677 阅读 · 0 评论 -
使用Perfmon和PAL工具查看Server性能--PerfMon入门指南
PerfMon是一个可靠性和性能监视器的一个组件,性能监视器启动可以点击Start=>All Programs ➪ Administrative Tools;或者在Run框里输入perfmon并回车。监视实时Server活动PerfMon最常见的用处是查看实时的Server活动。PerfMon提供即时数据,有系统负载、性能及资源消耗。通过阅读PerfMon当前的数据,你可以快速缩小问题的范翻译 2014-03-04 23:09:55 · 12058 阅读 · 1 评论 -
锁存器和自旋锁(Latch&Spinlock)----症状
在理想的系统中,每秒钟事务的数量会随着流量的增加而增加,增加额外的处理器线程可以帮助解决这个问题。更多的处理器线程应该带来更好的性能,但是它会导致Latch和Spinlock竞争。识别症状如果每秒钟的事务因为你启用额外的处理器线程而下降,并且平均的Latch等待所增加的比率超多吞吐量,那么你很有可能有Latch竞争。测量Latch竞争Latch像一块内存上的一把锁。随着更多的线程加翻译 2014-02-20 10:58:38 · 1696 阅读 · 0 评论 -
锁和并发性----隔离级别
隔离级别决定事务间的可见程度,理解隔离级别是做什么的,你就能明白它们是如何阻止并发性副作用的。翻译 2014-02-19 22:24:20 · 3571 阅读 · 0 评论 -
认识Tempdb----配置最佳实践
一些问题需要改变配置,这里会整合所有的tempdb配置的最佳实践。主要包括:tempdb放置的位置,初始化大小及自动增长,配置多个文件。Tempdb文件放置(File Placement)众所周知的最佳实践是把数据、事务日志和tempdb分开放置,该建议的原委在于不同物理存储之间工作负载的类型的分离,例如分离物理磁盘。分离有助于管理,潜在问题更容易隔离。例如,把tempdb分离到它自己的逻翻译 2014-02-28 10:34:46 · 6218 阅读 · 0 评论 -
认识Tempdb----排除日常问题
tempdb作为临时对象的共享资源,这一特性使得它比其他数据库更容易出现特定的性能问题。这里将介绍tempdb容易遭受的最常见的问题,以及如何进行故障排除,甚至避免它们。Latch 竞争与一般的数据库相比,tempdb作为临时存储区的使用使得工作负载模式可能包含数量不成比例的很多小对象的创建及摧毁。这种类型的工作负载能够导致一个数据库中需要分配对象的页上的Latch竞争。Latch是一个短翻译 2014-02-27 16:47:30 · 2536 阅读 · 0 评论 -
使用Extended Events诊断SQL Server 2012
Extended Events是SQL Server 2012自带的轻量型诊断工具。翻译 2014-05-05 22:39:01 · 2324 阅读 · 0 评论 -
使用SQLdiag合并数据采集----最佳实践
一个常见的最佳实践是保存多个配置的pssd.cab文件,该文件已配置了各种场景,如高CPU使用率、SQL Server超时、长时间运行的查询等。你需要做的就是把cabinet文件里的内容提取到一个文件夹,并改变PSSDIAG.XML配置文件中的Machine Name、Instance Name和ssver值,修改完成后,你就可以收集所需的诊断数据。准备好长期的数据采集有时需要长时间收集数翻译 2014-03-25 16:30:49 · 1818 阅读 · 0 评论 -
使用SQLdiag合并数据采集----使用SQLdiag配置管理器
PSSDIAG/SQLdiag Manager使你能够通过GUI配置数据采集,而不是费力地去修改XML配置文件。该工具的先决条件是.NET Frmework 2.0和Windows 2003 Server/XP或以上版本。工具路径在http://diagmanager.codeplex.com/。Diag Manager是一个32位的工具,默认的安装路径是:64位-------C:\Pro翻译 2014-03-25 10:26:52 · 3437 阅读 · 1 评论 -
管理和性能
通过SQL Server管理功能提升效率翻译 2014-07-09 22:20:01 · 1922 阅读 · 0 评论 -
SQL Server健康检查
SQL Server健康检查的重要性翻译 2014-07-04 15:07:57 · 7394 阅读 · 1 评论 -
使用PowerShell排错----使用PowerShell调查Server问题
PowerShell与WMI框架完全集成,WMI框架翻译 2014-07-03 12:39:34 · 2313 阅读 · 0 评论 -
使用PowerShell排错----使用PowerShell调校SQL Server性能
这里会测试一些脚本,用于SQL Server调校,如索引维护、管理翻译 2014-07-03 13:56:58 · 2160 阅读 · 0 评论 -
使用PowerShell排错----PowerShell入门
PowerShell是一个面向对象、命令行、翻译 2014-07-02 21:23:00 · 5777 阅读 · 0 评论 -
使用Extended Events诊断SQL Server 2012----查看由Extended Event捕获的数据
这里来看看如何查看由Extended Events会话捕获的数据。翻译 2014-06-09 15:15:22 · 2300 阅读 · 0 评论 -
SQL Server 2012内部原理及故障排除(专栏)
SQL Server 2012内部原理和故障排除(PROFESSIONAL SQL SERVER® 2012 INTERNALS AND TROUBLESHOOTING)一书对于你全面理解SQL Server 2012及处理SQL Server日常问题有很好的帮助。本人边看边翻译,并将重点内容发表在博客中,希望能够给大家带来一点帮助。原创 2014-07-17 09:34:28 · 5202 阅读 · 2 评论 -
使用Extended Events诊断SQL Server 2012----在SQL Server 2012中创建Extended Event会话
New Session Form介绍翻译 2014-06-04 21:55:12 · 1998 阅读 · 0 评论 -
使用SQL Nexus整合----解决日常问题
这节介绍RML Utilities和SQL Nexus的用户所翻译 2014-04-28 16:39:35 · 2698 阅读 · 1 评论 -
使用SQL Nexus整合----定制SQL Nexus
这节介绍如何定制SQL Nexus及RML Utilities,来翻译 2014-04-22 14:20:23 · 2621 阅读 · 0 评论 -
认识Tempdb----概览和用法
tempdb是一个临时数据存储,用于应用程式和内部操作,它很类似其他数据库,因为它有一个数据文件和一个日志文件,能够在SSMS看到,但是,它有一些独特的特征,这些特征影响你如何使用和管理它。使用一个实例的任何人都共享同一个tempdb。在学习、使用、调校和故障排除时,你应该考虑tempdb的如下功能和属性:重启后,存储在tempdb中的任何东西都不会保存,因为SQL Server每次启动的翻译 2014-02-26 23:10:33 · 3522 阅读 · 0 评论 -
锁和并发性----锁
SQL Server通过锁定一块数据来阻止访问它,有各种各样的锁类型(模式)。几乎各种数据访问都需要一种锁,即使是读取,这意味着锁实际上是阻塞其他类型的锁。监视锁有两个主要的DMV用于监视锁:sys.dm_tran_locks和sys.dm_os_wait_stats。前者罗列所有当前使用的所,包括识别锁资源的信息等;后者罗列捕获各种锁类型时进程等待的相关信息。下图显示了2个DMV的部分信翻译 2014-02-12 17:27:02 · 2149 阅读 · 0 评论 -
SQL Server架构----数据库事务
ACID属性事务是数据库的工作单元,通常包含一些读/写数据库的命令。一个工作单元要完成事务,必须满足ACID(原子性、一致性、隔离性和持久性)属性。原子性(Atomicity):意味着该事务的所有影响必须成功完成或者修改回滚。比如你去ATM取款,要么成功取出钱同时账户余额减少,要么取钱失败且余额不变。一致性(Consistency):它要确保事务不能破坏数据库的完整性规则,必须使数据库翻译 2013-12-25 15:55:37 · 2057 阅读 · 0 评论 -
SQL Server架构----查询的生命周期(上)
下图所展示的高层组件将用来说明查询的生命周期。关系引擎和存储引擎SQL Server分为两种引擎,即关系引擎和存储引擎。关系引擎有时也称作查询处理器,因为它的主要功能是查询优化和执行。它包含一个命令解析器,用来检查查询的语法,并准备查询树。查询优化器,可以说是任何数据库系统中的王冠之珠;查询执行器负责执行。存储引擎负责管理所有的I/O数据,它包含访问方式的代码,处理行、索引、页、分翻译 2013-12-27 12:34:00 · 4576 阅读 · 0 评论 -
存储系统----存储技术(1)
主机总线适配器(Host Bus Adapter --HBA)处理从服务器到存储设备的连接,也可以执行其他几个角色。而一个基本的HBA提供连接到存储,更先进的HBA已经嵌入阵列控制器。当存储在位于或连接到服务器,它被称为直接附加存储(Direct Attached Storage --DAS)。通过专用的外部阵列控制器管理的存储设备被称为存储区域网络(Storage Area Network翻译 2014-01-07 23:51:55 · 1608 阅读 · 0 评论 -
存储系统----SQL SERVER I/O
这里,我们开始研究SQL Server如何生成I/O。我们关心的是读取现有数据和写入新数据。最基本的SQL Server是由驻一些文件组成,这些文件驻留在服务器的文件系统内。通常,不同的计算机系统组件以不同的速率执行。在CPU里处理项目的速度,比处理来自处理器缓存的请求的速度更快。L2和L3 CPU缓存比计算机内存速度更快。服务器内存比任何I/O组件更快。 SQL Server会尝试通翻译 2014-01-03 13:25:23 · 1952 阅读 · 0 评论 -
理解内存----优化SQL Server内存配置
最小和最大Server内存Min Server Memory (MB) 和 Max Server Memory (MB)控制所有SQL Server内存使用的许可大小。比起之前的版本,SQL Server 2012的Memory Manager可以更简单地设置SQL Server内存需求的大小。SQL Server服务是以所需的最小量启动的,并根据需要增长。一旦内存使用增长超过Min Serv翻译 2014-01-03 10:44:26 · 21964 阅读 · 1 评论 -
理解内存----SQL Server内存
前面讲了SQL Server之外的内存环境,也就是说,理解和配置内存在SQLServer开启之前。这部分将着眼于SQL Server如何管理内存。内存管理在SQL Server中有一个三级结构。底部是内存节点,这是最低级的分配器,用于SQL Server的内存。第二个层次是由内存Clerk组成,这是用来访问内存节点和缓存存储,缓存存储则用于缓存。最上层包含内存对象,它提供了一个比内存C翻译 2014-01-02 14:58:19 · 10035 阅读 · 1 评论 -
理解内存----物理和虚拟内存
物理内存物理内存通常涉及到RAM(随机存取存储器),但它实际上还包括系统页面文件。RAM也称为主存或系统存储器,因为它是直接由CPU寻址。它被认为是你可以使用的最快的存储类型,但它是易失的,这意味着重启电脑时,会丢失所存储的东西。它也是昂贵的,与非易失性的存储(如硬盘)相比,其容量是有限的。因此,服务器用硬盘的组合来存储数据,然后将其加载到RAM中,在这里它可以更快地得到处理。相比之下,R翻译 2014-01-01 17:45:32 · 3468 阅读 · 0 评论 -
揭秘硬件
SQL Server的性能和可扩展性的根基是硬件和存储子系统,而数据库实例则运行其上。要揭秘硬件和存储,你首先要好好理解工作负载。你需要知道你的数据库服务器是要仅仅运行SQL Server Database Engine,还是其他组件,如SSAS、SSIS或SSRS。理想的情况,你或许想在专有的服务器上分别运行它们,但是额外的硬件和许可费用或许会让你无法奢侈。即便是仅仅运行数据库引擎,你也需要理解翻译 2014-01-01 10:36:24 · 1325 阅读 · 0 评论 -
SQL Server架构----查询的生命周期(下)
在上一篇介绍了关系引擎和存储引擎、缓冲池和基本的SELECT语句的生命周期。这里将介绍简单的UPDATE查询生命周期及恢复。 简单的UPDATE查询UPDATE的过程在到达访问方法之前,和SELECT完全一样。对于UPDATE,访问方法需要做数据更新,因此,在I/O请求被传递之前,修改的细节需要持久化到磁盘,这就是事务管理器的工作。 事务管理器事务管理器由两个组件,锁管理器翻译 2013-12-30 18:00:04 · 2104 阅读 · 0 评论 -
SQL Server架构----小结
本章节讲述了SQL Server的架构及其相关的组件,通过简单的SELECT和UPDATE查询的生命周期的介绍,你可以了解到各个组件间的工作流程。你还可以了解一些关键术语及恢复数据库的相关处理机制,还有SQLOS在整个体系结构中所处的位置及其作用。以下是本章节的要点:查询优化器的工作是在合理的时间内找到一个好计划,而不是最好的计划。你要读取或更新的任何信息,都要首先读入内存。在内存里被更新翻译 2013-12-31 11:24:10 · 1408 阅读 · 0 评论 -
查询处理和执行----查询处理
SQL Server中,查询处理是由关系引擎执行的。处理的过程是将你写的T-SQL语句转换成能发送请求给存储引擎并能获取所需结果的东西。SQL Server采取4步来处理一个查询:parsing、algebrizing、optimizing和execution,如图5-1所示。前3步都是由关系引擎执行的。第三步的输出结果是优化的计划,这个计划会被调度,在调度期间,会呼叫存储引擎来获取数据,即查询的翻译 2014-01-21 10:16:35 · 1934 阅读 · 0 评论 -
存储系统----存储技术(2)
SQLServer和 Windows I/O子系统微软的SQL Server是一种利用Windows I/O子系统的应用程序,没有覆盖SQL Server如何读取和写入NTFS文件系统的细节。我们将探讨具体的Windows I/O系统,它将错误报告给Windows事件日志。这应该有助于您解决许多存储错误。如图4-8所示,存储系统组件将错误报告给Windows系统事件日志,SQL Se翻译 2014-01-13 18:01:34 · 1823 阅读 · 0 评论 -
存储系统----存储技术(3)
存储分层(StorageTiering) 通常,制造非易失性存储器是为了提供高性能或高容量。高性能磁盘和闪存驱动器的成本比高密度存储要高得多。为了最有效地利用容量和性能,SAN阵列允许多种类型的存储,混合在给定的阵列中。SAN阵列中的这种混搭存储被称为存储分层。有些存储阵列提供自动化的存储分层,监视卷或卷片的高性能。当检测到预定的性能特性,阵列会把数据迁移到存储的更高层次。不同翻译 2014-01-15 16:58:50 · 1870 阅读 · 0 评论 -
锁存器和自旋锁(Latch&Spinlock)----监视Latch和Spinlock
我们可以通过DMV、性能监视器、扩展事件及内存转储来监视Latch和Spinlock,这里只介绍前3种。DMVsys.dm_os_wait_stats、sys.dm_os_latch_stats和sys.dm_os_spinlock_stats等3个DMV可用于监视Latch和Spinlock。另外,sys.dm_os_waiting_tasks会先死当前等待资源的任务列表,它提供一个有用翻译 2014-02-24 14:56:30 · 1375 阅读 · 0 评论