随笔分类 - SQL Server性能调优深度剖析
摘要:性能优化与故障排除百日谈(16)-索引的维护-设置填充因子-误区解析我们在之前的文章中已经多次提到了“填充因子”,并且在上一篇文章谈到索引碎片的时候,也知道了填充因子的重要性。尽管如此,其实我们很多的时候在建立索引,维护索引的时候并没有对填充因子过于太多的关注。我们本文就来说说填充因子的话题。在讨论之前,首先要声明一下:如何要比较合理的设置填充因子,一定要知道表中的数据的使用情况,还有索引所在列的类型和特性(如是否是采用GUID,还是Identity自增,还是采用其他的生成方式)。没有一个一蹴而就,完美的方案,一切都是随着情况而变化的,但是分析的思路是不变的,切记。关于填充因子的概念我们这里不
阅读全文
摘要:SQL Server横向扩展:设计,实现与维护(3)- 分布式分区视图的实现在上一篇文章中,我们已经说到分布式分区视图采用的是Linked Server技术实现,也大致的说了下它的实现原理,我们这里对实现的内部机制点到为止,我们本系列的目的在于实战和分析各种技术方案的使用场景。一般而言,我们常常会使用SQL Profiler来对Linked Server进行故障排除和性能优化。在SQL Server 2005以及之后版本中,增强了查看Linked Server工作情况的事件。通过Profiler,我们可以看到OLE DB调用其他数据库服务器的信息。查询的执行过程其实,分布式分区视图就是将一个查
阅读全文
摘要:谈谈SQL Server高可用的常见问题每次谈到SQL Server的高可用,很多的DBA,特别是SQL Server DBA心里一痛:因为大家都认为SQL Server无法或者很难实现SQL Server。也有很多的DBA朋友脑袋一拍,给出答案“高可用不就是微软的那几个技术吗,如Replication, Failover Clustering”…1.难道SQL Server在高可用上面就显得这么的无力吗?回答:不是的,其实SQL Server很给力。2.为什么很多人总是抱怨SQL Server中高可用很难实现呢?这里从几个方面来说。首先,就所接触到的很多的项目(欧美居多),这些项目中不乏所谓
阅读全文
摘要:索引已经是性能优化中大家常常提到而说到的问题,关于索引的很多的概念和解析,我们站点的索引进阶系列文章已经做了比较全面的讲述,我们这里就不在重复了。我们都知道,对于索引而言,我们会面临两个问题:1.是否建立了合适的索引2.如何维护和诊断现有的索引对于第一个问题,这确实不是三言两语可以讲清楚的,因为这首先需要对索引的知识掌握的非常清楚,而且还要知道建立索引的表中的数据的使用的情况(如读写的频率等)。我们会在之后的“收费阅读”版块,对索引进行深度的剖析,希望大家关注。对于第二个问题,我们首先就要清楚:索引建立之后不是一劳永逸的,而是需要不断的维护,而且数据库中的数据是变化的,所以,此时的索引可以不适
阅读全文
摘要:我们都知道,性能调优对于SQL Server来说已经变得越来越重要了,如何快速的进入调优,首先就要知道数据库为什么慢,里面存在哪里不合理的等待。只有理解了这些,才能做到有的放矢,对症下药。所以,正确的分析等待是后续一切调优的开始
阅读全文
摘要:性能优化与故障排除百日谈(3)-监控-使用DBCC命令监控日志空间的使用情况其实说到日志,那就得有很多的话题了,可以这样么说,对已日志的合理的规划和深入的研究,对性能起着至关重要的作用,甚至可以说是“成也日志,败也日志”。也许有朋友说这话有点言过其实了,但是事实却是如此,只是我们平时没有太注意这些,因为日志太司空见惯了,但是对已这么一个常见的东西,我们到底对其内部机制与原理掌握多少,对已日志引发的存储,管理,性能问题等如何解决,确实一门大的学问。备注:大家可以去看看我们录制的“日志故障排除与性能优化”视频。那么,我们今天主要讲述如何对日志使用进行一些监控。我们知道,每一个数据库都有一个日志文件
阅读全文
摘要:虽然缓存的最终目的为了提高性能,但缓存写的技术与缓存读的技术有很大的不同。但如果它带来的数据丢失危险很大,那么,就是一个不可接受的方案。因此,安全地将数据保存在非易失存储中是很重要的,因为这样数据就可以长期地保存。虽然读缓存技术用于读操作时可以提高系统性能,但当用于新产生数据的写操作时,却产生了一些有趣的问题。目前,用于缓存实现的大部分存储器都是易失型存储器,因此,当断电的时候,所有缓存的数据都将丢失。为了避免这个问题,一种专为缓存而特别设计的存储器已经面世,这种特制的存储器内嵌后备电池,经常用于磁盘子系统,以保证在某一指定时间内供电和数据存储。其他类型的非易失内存也已经生产出来,如闪存,但由
阅读全文
摘要:磁盘缓存所带来的性能增长变化很大,它跟几个不同的因素有关。然而,在有些情况下,如果仅考虑处理一个应用的总时间,磁盘缓存能带来令人惊讶的性能改善。缓存产品的销售商总是喜欢向顾客展示:使用它们的缓存产品运行应用时,客户只需花费25%或更少的时间即可完成。虽然对缓存不应抱有那么高的期望,但如果很好地配置缓存,进程运行速度达到原来的两倍并不是不可能的。磁盘缓存建立在几种不同的算法上,这些算法取决于I / O操作是读还是写。缓存的实现不像在气体容器中倒入一瓶辛烷助推器,而获得辅助加速。事实上,磁盘缓存并不是使设备的运行速度更快,而是尽量缩短I / O路径的距离,尽可能地用内存的性能代替设备的性能。为了获
阅读全文
摘要:在大多数计算机中,缓存是一个很重要的技术。事实上,计算机中的所有数据访问都可以看成是基本缓存概念的某种变体。不论什么时候,只要系统带有多个设备,而这些设备的性能又各不相同,就存在从慢速设备到快速设备不断更换工作地点以改善系统性能的可能性,这就是缓存的基本思想。即数据从一个地点拷贝到另一个地点,使之检索起来更快。虽然这是一个简单概念,但却包含着许多奇思妙想。简单地说,为满足某种预期的未来需要所做的准备即缓存。缓存是一种人类的本性,为了保证充分的物品供应量,需要预先进行计划,然后选择一个能够提供最快服务的地方,存放它们,这就是所谓的可靠物资管理。它也是计算机系统的核心概念,即将需要的信息放在可以最
阅读全文
摘要:前言:对于Log日志文件,相信大家都应该非常的熟悉了,Log日志文件的优化是性能调优和故障排除中的一个老大难。在优化的过程中,常常有人说”把Log日志放在单独的磁盘上面,并且将其自动增长禁止,并且把大小设置的和磁盘大小接近,可以提高性能“,确实,这句话看起来很对,但是最后发现似乎又不太对。通过研究和学习,也看了一些国外社区的文章,发布此文。一般而言,我们都没有必要去关心事务日志中的虚拟日志文件的个数。这里提到的“虚拟日志文件”的概念,我们后面会进行专门的讲述。很多的时候,我们在建立数据库的时候,都采用了它的默认配置,即:将日志的增长方式设定为“自动增长”,这样会直接导致一个后果就是“文件碎片”
阅读全文
摘要:解析索引中数据列顺序的选择问题 在多个列上面建立索引的时候,我们常常会遇到这样的一个问题“需要把哪个列放在前面”,因为索引中列顺序的不同,会对索引的使用,以至性能产生很大的影响。我们本篇就来分析这个问题。 对于上面的问题,一个常见的回答就是“把选择性最大列放在前面”,这里为了使得后面的讲述顺序进行,我们先来解释一下选择性的含义。选择性是用来描述数据的差异情况的,例如,如果一个表中有1000条数据,其中的某个字段,如ID,如果每一条数据的ID值都不一样,那么ID的选择性就是1;如果其中有300百个ID是一样的,那么就是说,有700个ID不同,那么选择性就是70%。很显然,数据的选择性越高,那么在
阅读全文
摘要:SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践前言:自从上一篇文章发出之后,收到了很朋友的关注。很多朋友要求多多实践,而不是纯粹的理论。确实,从打算出这个系列开始,我就本着实践的思想来进行的!同时,为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-2 议程如下: 实践概述 图形化执行计划实战 执行计划信息解读实践概述 执行计划可以辅助
阅读全文
摘要:SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程前言:在SQL Server中,执行计划在查询过程中其中关键性的作用,也是数据库性能调优的重要方面,为优化提供了很多的数据依据。本系列文章前前后后会有几十篇,将会对执行计划进行深入浅出的讲述,并且也会讲述如何利用执行计划进行数据库调优。为了使得大家更好的理解、消化这些知识,我会定期的就所写内容进行在线的视频讲座,朋友们可以去参与这个小组:http://www.agilesharp.com/c/sqlprofiler.aspx 报名活动开始啦:http://www.agilesharp.com/Event.aspx/T-
阅读全文