原贴地址:http://blog.csdn.net/smartkernel/archive/2007/07/28/1713096.aspx
www.SmartKernel.com
【书名 】:Microsoft SQL Server性能调校
【出版社 】:电子工业出版社
【作者 】:胡百敬
【评价 】:★★★☆☆☆☆☆☆☆
【正文 】:
----------------------------------------------------------------------------------------------------
0001:
判断力。
----------------------------------------------------------------------------------------------------
0002:
技术可以教,而艺术不能教。
----------------------------------------------------------------------------------------------------
0003:
性能问题的症结通常不是表象所显示出来的。从不同的方面去看,往往会有不同的解释。最简单的例子,当你
看到CPU很忙,长时间处于百分之百的使用率,可能直觉就是CPU性能不足。但其实可能是硬盘性能不足,或是内存
容量不够,让CPU一直忙于I/O。
----------------------------------------------------------------------------------------------------
0004:
要有好的开发团队绝非一蹴而就,需要有长时间的培养,每个成员都有充足的培训训练,彼此有充分的合作默
契,如此才能产生出有效的系统。
----------------------------------------------------------------------------------------------------
0005:
数据库不应该让前端程序代码直接存取数据表,而要通过视图,存储过程或用户自定义函数来存储,这样可以
提高数据表重新设计的自由度。
----------------------------------------------------------------------------------------------------
0006:
做性能调校的第一项工作应该是建立性能的基线,它可能代表着调校前系统的各种数据,或是用户希望达到的
基本目标值,也可能是昔日系统正常运行时的某些数据值。基线就是用来做比较的,任何性能调校的动作都应该是
做数据的比较,不要诉诸情绪。
----------------------------------------------------------------------------------------------------
0007:
成本意识。
----------------------------------------------------------------------------------------------------
0008:
事前的整体评估很重要。
----------------------------------------------------------------------------------------------------
0009:
最怕的就是像无头苍蝇盲目的错误尝试(trial and error)。
----------------------------------------------------------------------------------------------------
0010:
判断专业与否就是看你是否可以立刻问到重点,而不是来来回回,反反复复问相同的问题。
----------------------------------------------------------------------------------------------------
0011:
若无法简明的描述问题,代表你尚不了解问题,或者是没有抓到重点。
----------------------------------------------------------------------------------------------------
0012:
最早开始的,最晚结束。
----------------------------------------------------------------------------------------------------
0013:
谋定而后动。
----------------------------------------------------------------------------------------------------
0014:
花现在的时间可以节省未来的时间(spend time now to save time later)。
----------------------------------------------------------------------------------------------------
0015:
压垮骆驼的最后一根稻草。
----------------------------------------------------------------------------------------------------
0016:
头痛医头,脚痛医脚。
----------------------------------------------------------------------------------------------------
0017:
虽然我们要三思而行,但你依然要顾及到用户的感受,否则迟迟没有行动,甚至是搜集了太多的信息反而不知
道从哪里开始,用户在找你一段时间之后仍不见改善,会失去耐心。因此你要在取得信息、信息分析、构想计划、
谨慎执行、反省接口,以及安抚用户中取得平衡,这是很困难的一件事。
----------------------------------------------------------------------------------------------------
0018:
尽量不要让数据库的文件与操作系统交换文件放在同一个物理硬盘上,这样容易抢硬盘。
----------------------------------------------------------------------------------------------------
0019:
“事件探查器”可以用来跟踪SQL语句的执行情况,包括执行时的各种数据。
----------------------------------------------------------------------------------------------------
0020:
DBCC:Database Console Command
----------------------------------------------------------------------------------------------------
0021:
同步服务器与计算机的时间:net time \\服务器IP /set
----------------------------------------------------------------------------------------------------
0022:
清除共享连接:net use * /del
----------------------------------------------------------------------------------------------------
0023:
UNION ALL:不删除重复行,UNION的列中可以是大数据类型。
UNION:删除重复行,UNION的列中不能是text、image等大数据类型。
----------------------------------------------------------------------------------------------------
0024:
大量批处理数据操作时,若采用没有log行为一定比逐条数据由两次写入,先记录log后再写到数据库的操作为
快;因此将数据放入到新的数据表,SELECT...INTO一定比逐条做INSERT快;清空数据表TRUNCATE TABLE也一定比
DELETE快。
----------------------------------------------------------------------------------------------------
0025:
调用存储过程时,如果指定了存储过程的所有者,则能节省搜索存储过程的时间。
----------------------------------------------------------------------------------------------------
0026:
列出当前数据中各数据表的数据量:
SET NOCOUNT ON
DECLARE @db VARCHAR(20)
SET @db = DB_NAME()
DBCC UPDATEUSAGE(@db) WITH NO_INFOMSGS
GO
CREATE TABLE #tbl
(
表名 VARCHAR(50) null,
条数 INT null,
保留空间 VARCHAR(50) null,
数据占用空间 VARCHAR(50) null,
索引占用空间 VARCHAR(50) null,
未使用空间 VARCHAR(50) null
)
DECLARE @tblName VARCHAR(50)
DECLARE curTbls CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
OPEN curTbls
FETCH NEXT FROM curTbls INTO @tblName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT #tbl EXEC sp_spaceused @tblName
FETCH NEXT FROM curTbls INTO @tblName
END
CLOSE curTbls
DEALLOCATE curTbls
SELECT * FROM #tbl ORDER BY CONVERT(INT,LEFT(保留空间,LEN(保留空间)-2)) DESC
DROP TABLE #tbl
----------------------------------------------------------------------------------------------------
0027:
Northwind..sp_Rebuild:注意..是不能省略一个的。数据库名..对象名
----------------------------------------------------------------------------------------------------
0028:
重新建立索引:DBCC DBREINDEX([tblA])
----------------------------------------------------------------------------------------------------
0029:
一般来说,存储过程会放在某个用户自定义的数据库中,供使用该数据库数据的连接可以存取,或是命名存储
过程时,以“SP_”开头放在master系统数据库中,则所有的用户不管连接落在哪一个数据库,都可以调用(注意,
并不是以“SP_”就是全局存储过程,还必须放在master数据库中)。
----------------------------------------------------------------------------------------------------
0030:
假设客户数据表中有一百万记录,而我们需要找寻:
SELECT * FROM Customer WHERE CustomerID = 1
若没有索引,则需要比较一百万次,若有以CustomerID字段建立的索引,则因为索引键值数据都必定以B-Tree
结构有顺序的摆放,所以可采用二分查找法找数据。也就是2的n次方大于记录数,就可以找到该笔数据。而2的20次
方大于一百万,因此最多20次查找就能找到。索引和非索引的性能的差距就非常大了。
----------------------------------------------------------------------------------------------------
0031:
选择性:代表符合你查询条件的记录占总记录的百分比。选择性越高(也就是这个比例越小),越适合采用索
引。在选择性比较低的时候,通过非聚集索引存储是非常没有效率的存储方式,还不如直接做数据表扫描。
----------------------------------------------------------------------------------------------------
0032:
在连接两个表时,选择性高的数据库适合做内表,选择性低的适合做外表。
----------------------------------------------------------------------------------------------------
0033:
视图也可以建立索引,但是必须先有一个聚集索引,才能建立非聚集索引。且删除聚集索引的时候,同时删除
非聚集索引。
----------------------------------------------------------------------------------------------------
0034:
含有不确定数值的列(视图中),不能建立索引,例如有GetDate()函数的列。
----------------------------------------------------------------------------------------------------
0035:
执行事务之前,应该先设置锁超时(防止死锁):
SET LOCK_TIMEOUT 500 --单位是ms
----------------------------------------------------------------------------------------------------
0036:
要有习惯重新察看原先的代码,才能精益求精。
----------------------------------------------------------------------------------------------------
0037:
重构是提高的很好方式。
----------------------------------------------------------------------------------------------------
0038:
在开发过程中就应当考虑性能问题,而不是马后炮。
----------------------------------------------------------------------------------------------------
0039:
sp_executesql存储过程与EXECUTE语法的功能相似。但sp_executesql可以缓存执行计划,供多人使用,性能会
高一些。
----------------------------------------------------------------------------------------------------
分享到:
相关推荐
资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...
SQL Server 性能监控指标说明 SQL Server 的性能监控指标是数据库管理员和开发者对数据库性能进行监控和优化的重要依据。以下是 SQL Server 性能监控指标的说明: 配置硬件 在 SQL Server 中,配置硬件是性能监控...
### SQL性能调校的核心知识点详解 #### 一、性能调校的重要性及步骤 **标题解析:** “SQL性能调校.pdf”直接点明了文档的主题,即如何优化SQL的执行效率,确保数据库系统能够高效、稳定地运行。性能调校在IT行业...
[Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...
Microsoft SQL Server 2005 Backward Compatibility Components (Microsoft SQL Server 2005 向后兼容组件) SQL Server Backward Compatibility 包中包含 最新版本的 Data Transformation Services 2000 运行时 ...
【Microsoft SQL Server 2005 向后兼容组件】是微软为了确保应用程序能在更新的SQL Server版本上继续运行而提供的关键组件。这些组件确保了与SQL Server 2005相关的功能和特性在更高版本的数据库服务器中得以支持,...
5. **性能调优**:涵盖监控和分析SQL Server性能的方法,如使用动态管理视图(DMVs)和性能计数器,以及如何进行查询优化,包括索引优化和查询改写。 6. **高可用性**:探讨SQL Server 2008的高可用性解决方案,如...
SQLServer 性能仪表盘(Performance Dashboard Reports)是SQL Server管理工具中的一种强大特性,它为数据库管理员提供了直观且详尽的性能监控解决方案。通过这些报告,DBAs能够快速识别和解决性能瓶颈,优化数据库...
Microsoft SQL Server Native Client (SQL Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接到 Microsoft SQL Server ...
为了帮助读者更好地利用SQL Server 2008的强大功能,《Inside Microsoft SQL Server 2008 T-SQL Programming》还提供了一系列性能优化技巧和最佳实践建议: - **查询优化**:包括如何分析查询计划、识别性能瓶颈、...
Microsoft SQL Server 2008 Native Client是在Windows 10操作系统上使用的一种数据库连接组件,它为应用程序提供了与SQL Server交互的能力。这个组件是专为SQL Server设计的,旨在提高性能、安全性和兼容性,特别是...
SQL Server性能监视器是Microsoft Windows操作系统内置的一个工具,用于收集和查看系统以及应用程序的性能数据。对于SQL Server来说,它可以用来监测各种性能计数器,帮助我们了解SQL Server实例的运行状况,进而...
标题中的“Win10可用的Microsoft SQL Server 2008 Native Client.zip”指的是一个针对Windows 10操作系统优化的Microsoft SQL Server 2008 Native Client的压缩包。这个客户端是一个数据库连接软件,用于在应用程序...
SQL Server性能监控指标说明 SQL Server性能监控指标是衡量SQL Server运行状况和性能的重要指标,包括I/O、内存、网络、CPU等多个方面的指标。这些指标可以帮助数据库管理员和开发者了解SQL Server的运行情况,并...
资源名称:SQLServer性能优化篇内容简介: 本文档主要讲述的是SQLServer性能优化;在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...
"Microsoft System CLR Types for Microsoft SQL Server 2014" 是一个重要的组件,它包含了运行SQL Server 2014所需的一系列公共语言运行时(Common Language Runtime, CLR)类型。这些类型使得开发者能够使用.NET ...
"卸载 Microsoft SQL Server 2008" 卸载 Microsoft SQL Server 2008 是一种复杂的过程,需要按照正确的步骤进行,以确保卸载成功。下面是卸载 Microsoft SQL Server 2008 的详细步骤: 一、从控制面板卸载 卸载 ...
Microsoft SQL Server Management Studio 18 为数据库原理与应用课程所用