易截截图软件、单文件、免安装、纯绿色、仅160KB

最大程度降低 SQL Server 中的阻塞

http://technet.microsoft.com/zh-cn/magazine/2008.04.blocking.aspx
SQL Server
最大程度降低 SQL Server 中的阻塞
Cherié Warren
 
概览:
发生锁升级的原因
避免不必要的阻塞
优化查询
监视锁定对性能的影响
锁定对支持数据库的并发读写活动而言是必需的,但阻塞却会对系统性能产生负面影响,有时让人难以觉察。在本文中,我将介绍如何优化 SQL Server 2005 或 SQL Server 2008 数据库以最大程度降低
阻塞,以及如何监视系统以更好地了解锁定如何对性能产生影响。
锁定和升级
SQL Server® 根据受影响的记录数和系统中存在的并发活动来选择最合适的锁粒度。默认情况下,SQL Server 会选择尽可能小的锁粒度,如果它可以更高效地使用系统内存,则仅选择粗粒度锁。只有当锁升级会对总体系统性能带来好处时,SQL Server 才会升级锁。如图 1 所示,当特定扫描中锁的数量超过 5,000 或者系统用于锁的内存数超过可用容量时,将会开始升级:
Figure 1 促使锁升级的条件 (单击该图像获得较大视图)
当锁设置为 0 时,数据库引擎使用 24 % 的非地址窗口化扩展(非 AWE)内存
当锁设置非 0 时,数据库引擎使用 40 % 的非 AWE 内存
如果确实发生了升级,则始终会升级到表级锁。
避免不必要的阻塞
阻塞在任何锁粒度情况下都可能发生,但阻塞的显现程度却在升级后增加。锁升级可能是一个信号,说明您的应用程序在设计、编码或配置方面的效率不高。
遵循数据库设计基本原理(例如,使用采用窄键的标准化架构以及避免在事务性系统中执行大量数据操作)是避免发生阻塞的重要手段。如果未遵循这些原理(例如,将报告系统从事务性系统中分离出来,或在非工作时间处理数据馈送),则系统优化将会很困难。
索引编制可能是决定访问数据所需锁数量的关键因素。索引可以通过减少数据库引擎必须执行的内部查找次数来减少查询访问的记录数。例如,如果您从一个表的非索引列选择一行,则表中的每一行都需要被临时锁定,直到确定了所需的记录为止。但是,如果对该列编制了索引,则仅需要单个锁。
SQL Server 2005 和 SQL Server 2008 都包含动态管理视图(sys.dm_db_missing_index_group_stats、 sys.dm_db_missing_index_groups、sys.dm_db_missing_index_details),这些视图根据累计使用情况统计来显示那些将会得益于索引的表和列。
碎片也可能是一个隐含的性能问题,如果碎片过多,数据库引擎可能需要访问比采用其他


相关文档:

SQL Enlight 1.5 破解 第二版

SQL Enlight 1.5 破解 第二版 收藏
  破解声明:我的破解仅用于研究,请勿用于商业用途,需要使用请购买正版软件。
可恶的UbitSoft,我的破解出来还没几天,他的程序就改变了验证逻辑,虽然我觉得SQL Enlight的功能不是非常强大,但是他的防破解功能倒是下了不少功夫,除了核心代码用vc++.net编写的native cod ......

SQL语句:查询数据库中所有非系统表的信息

SELECT
       (case when a.colorder=1 then d.name else '' end)表名,
       a.colorder 字段序号,
       a.name 字段名,
       (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity ......

精妙Sql语句

1. 判断a表中有而b表中没有的记录
select a.* from tbl1 a
left join tbl2 b
on a.key = b.key
where b.key is null
         虽然使用in也可以实现,但是这种方法的效率更高一些
2. 新建一个与某个表相同结构的表
select * into b
from a where 1<>1
3.betwee ......

转载 SQL中的datetime用法详解

转载 SQL中的datetime用法详解
转载地址:http://blog.sina.com.cn/s/blog_495491770100fq4n.html
2009-07-27 09:45  sql server2000中使用convert来取得datetime数据类型样式
日期数据格式的处理,两个示例:
CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02
时间一般为
getdate()
函数或数据表里的 ......

高效SQL查询之索引(I)

大型系统的生产环境,一般情况下,我们评价一条查询是否有效率,更多的是关注逻辑 IO( 至于为什么,回头补一篇 ) 。我们常说,“要建彪悍的索引”、“要写高效的 SQL ”,其实最终目的就是在相同结果集情况下,尽可能减少逻辑 IO 。
1.1      where 条件的列上都得有统计信息。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号