`

Microsoft SQL Server性能调校

阅读更多

【书名    】: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可以缓存执行计划,供多人使用,性能会
高一些。
----------------------------------------------------------------------------------------------------

分享到:
评论

相关推荐

    《Microsoft SQL Server性能调校》范例

    《Microsoft SQL Server性能调校》一书(电子工业出版社,胡百敬著)第6章〈索引与查询性能〉,里面需要范例光盘第2章“Credit Database ”子目录里的脚本代码以建立Credit范例数据库和相关的存储过程。--应朋友需要...

    SQLServer性能优化与管理的艺术

    资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...

    SQL性能调校.pdf

    ### SQL性能调校的核心知识点详解 #### 一、性能调校的重要性及步骤 **标题解析:** “SQL性能调校.pdf”直接点明了文档的主题,即如何优化SQL的执行效率,确保数据库系统能够高效、稳定地运行。性能调校在IT行业...

    Microsoft SQL Server 2008 R2 SP1 Native Client

    Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是单一动态链接库 (DLL),其中包含 SQL OLE DB 提供者和 SQL ODBC 驱动程序。此链接库针对使用机器码 API (ODBC、OLE DB 和 ADO) 的应用程序...

    Microsoft SQL Server 2008 Internals (PDF 高清版)

    Tripp**:同样是SQLskills集团的创始人之一,专长于SQL Server性能问题解决。 - **Conor Cunningham**:微软的技术专家,主要负责SQL Server的开发工作。 - **Adam Machanic**:著名的SQL Server专家,尤其在查询...

    [SQL Server] Microsoft SQL Server 2012 技术内幕 (英文版)

    [Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...

    Win10可用的Microsoft SQL Server 2008 Native Client

    Microsoft SQL Server 2008 Native Client是在Windows 10操作系统上可以使用的数据库连接组件,它为应用程序提供了与SQL Server进行交互的能力。该组件支持多种数据访问接口,如ODBC(Open Database Connectivity)...

    SQL Server 性能监视与优化.pdf

    Microsoft SQL Server 作为一款广泛使用的数据库管理系统,在各种规模的企业中发挥着核心作用。为了确保SQL Server能够高效稳定地运行,并及时发现和解决问题,性能监视与优化显得尤为重要。 #### 二、评估性能的...

    深入解析sqlserver 2008 Microsoft SQL Server 2008 Internals

    本书不仅适合数据库管理员、开发人员和系统架构师深入学习SQL Server 2008的内部机制,还对那些想要理解和解决SQL Server性能问题的人们提供了宝贵的参考。书中的实例和经验分享有助于读者更好地理解和应用这些理论...

    Microsoft SQL Server 2005 向后兼容组件

    Microsoft SQL Server 2005 Backward Compatibility Components (Microsoft SQL Server 2005 向后兼容组件) SQL Server Backward Compatibility 包中包含 最新版本的 Data Transformation Services 2000 运行时 ...

    Microsoft SQL Server 2005 向后兼容组件SQLServer2005_BC.msi

    【Microsoft SQL Server 2005 向后兼容组件】是微软为了确保应用程序能在更新的SQL Server版本上继续运行而提供的关键组件。这些组件确保了与SQL Server 2005相关的功能和特性在更高版本的数据库服务器中得以支持,...

    SQLSERVER性能分析步骤

    dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析 dba sqlserver 性能分析

    SQLServer 性能仪表盘(Performance Dashboard Reports)

    SQLServer 性能仪表盘(Performance Dashboard Reports)是SQL Server管理工具中的一种强大特性,它为数据库管理员提供了直观且详尽的性能监控解决方案。通过这些报告,DBAs能够快速识别和解决性能瓶颈,优化数据库...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    为了帮助读者更好地利用SQL Server 2008的强大功能,《Inside Microsoft SQL Server 2008 T-SQL Programming》还提供了一系列性能优化技巧和最佳实践建议: - **查询优化**:包括如何分析查询计划、识别性能瓶颈、...

    SQLServer性能分析

    SQL Server性能监视器是Microsoft Windows操作系统内置的一个工具,用于收集和查看系统以及应用程序的性能数据。对于SQL Server来说,它可以用来监测各种性能计数器,帮助我们了解SQL Server实例的运行状况,进而...

    Microsoft SQL Server 2008技术内幕:T-SQL查询

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    Microsoft SQL Server 2012 Express LocalDB.zip

    **Microsoft SQL Server 2012 Express LocalDB** 在开发环境中,经常遇到需要数据库支持的情况,尤其是对于Web项目。在Visual Studio (VS) 2017中,如果你尝试打开一个依赖于数据库的.NET项目,可能会遇到错误提示...

    Microsoft SQL Server 2012 Native Client 官方安装版 64bit

    此组件是专门为SQL Server设计的,能够提供比通用数据访问接口更高的性能和功能。 **安装问题与Win10兼容性** 在描述中提到,有时在Windows 10操作系统中,使用Navicat这样的数据库管理工具远程连接到SQL Server时...

Global site tag (gtag.js) - Google Analytics