水滴石穿

渴望成为高手--Amy.Qiu
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年4月26日

摘要: 本文阐述了批处理在 SQL Server 2005 中的缓存和重用方式,并就最大限度重用已缓存的计划提供了相应的最佳实务。另外,文中还说明了一些重新编译批处理的方案,并针对减少或消除不必要的重新编译,给出了最佳实务。 一、本白皮书的目的 此白皮书的目的有几个。阐述了批处理在 SQL Server 2005 中的缓存和重用方式,并就最大限度重用已缓存的计划提供了相应的最佳实务。另外,文中还说明了一些重新编译批处理的方案,并针对减少或消除不必要的重新编译,给出了最佳实务。本白皮书阐述了 SQL Server 2005 的“语句级重新编译”功能。另外,还介绍了许多工具及实用程序,它们可在查询编译.. 阅读全文

posted @ 2013-04-26 17:42 AmyQiu 阅读(203) 评论(0) 推荐(0) 编辑

摘要: 最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将操作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB)。在升级后的开始几个星期之内,服务器在使用中表现良好。但是不久后就发现,在服务器上同时运行的其他应用程序却出现了异常,不时地报出内存分配不足的警告。经过几次跟踪后发现,原来是SQL Server吞去了大部分内存所致。被SQL Server占用的内存由升级前的不到400MB一下子增加到现在的900MB,并且有不断增长 阅读全文

posted @ 2013-04-26 17:33 AmyQiu 阅读(163) 评论(0) 推荐(0) 编辑

摘要: 把计划放入缓存之后,SQL Manager 按照执行要求逻辑进行检查,确定是否有更改的内容,是否需要重新编译。即使编译到执行之间时间间隔只有几毫秒,也可能有人会执行一条数据定义语句 (DDL),为关键的表加了索引。这种可能性不大,但是确实存在,因此 SQL Server 必须考虑这一点。有几种情况 SQL Server 必须重新编译存储规划。元数据的修改,例如增加或删除索引,是重新编译的最主要的原因。服务器必须确信所使用的计划反映了索引的当前状态。重新编译的另一种原因是统计情况发生变化。SQL Server 还维护不少数据使用频率的统计信息。如果数据使用频率分布情况变化很大,则可能需要另一个查 阅读全文

posted @ 2013-04-26 17:31 AmyQiu 阅读(175) 评论(0) 推荐(0) 编辑

摘要: 1 逻辑数据库和表的设计数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为优化数据库和应用程序打下良好的基础。标准化的数据库逻辑设计包括用多的、有相互关系的窄表来代替很多列的长数据表。下面是一些使用标准化表的一些好处。A:由于表窄,因此可以使排序和建立索引更为迅速;B:由于多表,所以多镞的索引成为可能;C:更窄更紧凑的索引;D:每个表中可以有少一些的索引,因此可以提高insert update delete等的速度,因为这些操作在索引多的情况下会对系统性能产生很大的影响;E:更少的空值和更少的多余值,增加了数据库的紧凑性由于标准化,所以会增加了在获 阅读全文

posted @ 2013-04-26 17:17 AmyQiu 阅读(229) 评论(0) 推荐(0) 编辑

摘要: 如何加快查询速度?1、升级硬件2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。3、扩大服务器的内存4、增加服务器CPU个数5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。7、查询时不要返回不需要的行、列8、用select top 100 / 10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行9、在IN后面值的列表 阅读全文

posted @ 2013-04-26 17:16 AmyQiu 阅读(138) 评论(0) 推荐(0) 编辑

摘要: SQL 语句优化原则:1. IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。 但是用IN的SQL性能总是比较低的,从执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: 将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。推荐方案:在业务密集的SQL当中尽量不采用IN操作符。可以用exists代替。 SQL Server例子:Exists用法:se 阅读全文

posted @ 2013-04-26 16:31 AmyQiu 阅读(118) 评论(0) 推荐(0) 编辑

摘要: 昨天看到网上有一个关于SQL SERVER 课件,便随手下载了下来看看主要讲了些什么内容,于是看到了下面两个PPT页面 由于第一张PPT上的内容不太准确(日志文件中没有“日志页”的概念,只有VLF的概念,可能是我们对“数据页”的概念太深刻了,因此弄了以“日志页”的概念出来,而PPT中说先更新高速缓冲区中的数据页,然后将事务日志写入到“日志页”,很容易让人理解成先更改高速缓冲区,然后将日志写入到磁盘上的“日志页”),再加上我看PPT时比较"囫囵"(只看到前一张PPT,没有往后翻两下看后面一张PPT).因此我觉得PPT的作者在日志的写入顺序上有问题.索性查了一下资料,然后比较深 阅读全文

posted @ 2013-04-26 16:27 AmyQiu 阅读(175) 评论(0) 推荐(0) 编辑

摘要: 第一部分:SQL SERVER是通过哪个组件以及如何来和客户端进行“接受要求”及“提供结果”的交互的SQL SERVER 服务器于客户端的交互主要依靠Open Data Services(简称ODS)组件,中文名 “开放数据服务”。在《SQL SERVER 2000技术内幕》中,译者将Open Data Services 翻译为“开放式数据服务”,但是这里的OPEN应该意味着“把数据开放”,“开放式”有一点不准确,联系上下文来看的话,无伤大雅。ODS组件主要负责监听新的连接,清理失败的连接,以及将关系引擎返回的数据集、消息和状态值等信息返回给客户端。ODS组件可以响应一下三种事件:连接事件、语 阅读全文

posted @ 2013-04-26 16:26 AmyQiu 阅读(377) 评论(0) 推荐(0) 编辑