SQL Server 性能调优培训引言

原文:SQL Server 性能调优培训引言

大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录。

作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于是我通过网络找了各种MS SQL技术的相关文档,总觉得讲得比较干涩,没有一个系统性,今年3月底我无意浏览到一个网站提供免费的性能调优的半年培训(http://www.sqlpassion.at/academy/performance-tuning-training-plan/),网站所有人会在每周往你邮箱发送一份性能调优的培训材料,于是在今天,一个多月学习下来,我觉得自己对SQL SERVER的理解已经开始深入,所以我觉得应该把这些材料共享给大家,顺便对自己学习MS SQL技术一个记录。

因为我觉得,很多东西只有自己对别人讲解一遍,才会加深自己的理解,顺便提升自己。

以下开始是我的学习材料分享,这个是第0篇,总论:

  • 第1个月:数据库基础

  • 在第1个月我们会通过讨论在SQL SERVER中的基本概念,建立SQL SERVER的基础。在第一个月的4个星期里我们会学到:
  • 第2个月:索引

  • 基于你已在第1个月学到的知识,第2个的一切都是关于SQL Server中的索引。有了好的索引战略,你就可以获得大幅度提速SQL Server工作。这4周我们会涵盖(以下)细节。
    • 第5周 堆表
    • 第6周 聚集索引
    • 第7周 非聚集索引
    • 第8周 覆盖索引 卸载点(Tipping Point)
  • 第3个月:执行计划

  • 当我们提交查询给SQL Server,我们通过T-SQL语句只告诉SQL Server我们要什么。但在SQL Server内部却是编译成执行计划。执行计划是我们如何获取我们需要数据的获取战略。如果你有性能问题,你就需要理解如何读懂并调整生成的执行计划。这4周你会学到关于执行计划的下列内容。
    • 第9周 理解执行计划
    • 第10周 计划缓存
    • 第11周 重编译
    • 第12周 并行执行计划
  • 第4个月:统计信息

  • 统计信息是SQL Server数据库里最重要的部分,在生成执行计划时,统计信息使用来决定你的查询里多少列可以被返回。如果你的统计信息过期了,你会获得来自SQL Server次佳的执行计划。因此我们把一个月的时间致力于统计信息,只有这样你才可以对它们非常熟悉。这个月我们会谈到:
    • 第13周 为什么统计信息如此重要
    • 第14周 直方图与密度(The Histogram & the Density Vector)
    • 第15周 列相关的问题(Problems with Column Correlations)
    • 第16周 SQL Server 2014中的基数预估(Cardinality Estimation in SQL Server 2014)
  • 第5个月:锁,阻塞,死锁

  • 到目前为止作为开发或数据库管理员的你,你的生活都还太平,因为我们只是单用户与SQL Server打交道。如果是多用户,在SQL Server内部会发什么呢?在那个情况下SQL Server需要获得锁,这个最终会引发阻塞的情况。而且,你若不幸的话,阻塞会导致死锁。为你准备(迎接)这些情景,这个月我们会谈到:
    • 第17周 事务隔离级别
    • 第18周 乐观并发控制(Optimistic Concurrency)
    • 第19周 锁升级(Lock Escalations)
    • 第20周 死锁
  • 第6个月:性能监控与故障排除

  • 哇哦,终于你到了性能调优的最后一个月。你已经在成为性能调优专家的路上了。但是你还是需要一些额外知识:在SQL Server中运行中,我们如何做性能监控与故障排除来避免性能上的问题。因此在最后一个月我们会涉及:
    • 第21周 PAL工具
    • 第22周 等待统计(Wait Statistics)
    • 第23周 临时表(TempDb)
    • 第24周 数据库维护(Database Maintenance)
时间: 2024-08-24 13:02:22

SQL Server 性能调优培训引言的相关文章

SQL Server 性能调优4 之书写高效的查询

限制查询的行和列来提高性能 这条规则非常简单,这里就不细说了. 使用搜索可参数化判断(sargable conditions)来提高性能 Sargable 由 Search ARGument Able 简写而来,字面意思是搜索可参数化?还是比较晦涩哎... 总之使用Sargable判断可以帮助查询优化器更有效地利用索引,并提高采用 index seek 的可能性,我们先把所有的操作符分一下组. Sargable操作符 = > >= < <= BETWEEN LIKE (通配符必须出

SQL Server 性能调优3 之索引(Index)的维护

SQL Server 性能调优3 之索引(Index)的维护 热度1 评论 16 作者:溪溪水草 前言 前一篇的文章介绍了通过建立索引来提高数据库的查询性能,这其实只是个开始.后续如果缺少适当的维护,你先前建立的索引甚至会成为拖累,成为数据库性能的下降的帮凶. 查找碎片 消除碎片可能是索引维护最常规的任务,微软官方给出的建议是当碎片等级为 5% - 30% 之间时采用 REORGANIZE 来“重整”索引,如果达到 30% 以上则使用 REBUILD 来“重建”索引.决定采用何种手段和操作时机可

SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈

原文:SQL Server 性能调优(一)--从等待状态判断系统资源瓶颈 通过DMV查看当时SQL SERVER所有任务的状态(sleeping.runnable或running) 2005.2008提供了以下三个视图工详细查询: DMV 用处 Sys.dm_exec_requests 返回有关在SQL Server中执行的每个请求的信息,包括当前的等待状态 Sys.dm_exec_sessions 对于每个通过身份验证的会话都返回相应的一行.此时图是服务器范围的视图.此视图首先可以查到服务器负

SQL Server 性能调优2 之索引(Index)的建立

前言 索引是关系数据库中最重要的对象之一,他能显著减少磁盘I/O及逻辑读取的消耗,并以此来提升 SELECT 语句的查找性能.但它是一把双刃剑,使用不当反而会影响性能:他需要额外的控件来存放这些索引信息,并且当数据更新时需要一些额外开销来保持索引的同步. 形象的来说索引就像字典里的目录,你要查找某一个字的时候可以根据它的比划/拼音先在目录中找到对应的页码范围,然后在该范围中找到这个字.如果没有这个目录(索引),你可能需要翻遍整本字典来找到要找的字. SQL Server 中的索引以 B-Tree

SQL Server 性能调优 之执行计划(Execution Plan)调优

执行计划中的三种 Join 策略 SQL Server 存在三种 Join 策略:Hash Join,Merge Join,Nested Loop Join. Hash Join:用来处理没有排过序/没有索引的数据,它在内存中把 Join 两边数据(的关联key)分别建立一个哈希表.例如有以下的查询语句,关联的两张表没有建立索引,执行计划将显示为Hash Join. SELECT sh.* FROM SalesOrdHeaderDemo AS sh JOIN SalesOrdDetailDemo

sql server 性能调优 资源等待之 LCk

一.  概述 这次介绍实例级别资源等待LCK类型锁的等待时间,关于LCK锁的介绍可参考 "sql server 锁与事务拨云见日".下面还是使用sys.dm_os_wait_stats 来查看,并找出耗时最高的LOK锁. select wait_type, waiting_tasks_count, wait_time_ms , max_wait_time_ms, signal_wait_time_ms from sys.dm_os_wait_stats where wait_type

sql server 性能调优 资源等待之网络I/O

原文:sql server 性能调优 资源等待之网络I/O 一.概述 与网络I/O相关的等待的主要是ASYNC_NETWORK_IO,是指当sql server返回数据结果集给客户端的时候,会先将结果集填充到输出缓存里(ouput cache),同时网络层会开始将输出缓存里的数据打包,由客户端接收.如果客户端接收数据包慢,sql server没有地方存放新数据结果时,这时任务进入ASYNC_NETWORK_IO等待状态. 1. 从实例级别查看ASYNC_NETWORK_IO 平均耗时: 4636

sql server 性能调优之 SQL语句阻塞查询

原文:sql server 性能调优之 SQL语句阻塞查询 在生产环境下,有时公司客服反映网页半天打不到,除了在浏览器按F12的Network响应来排查,确定web服务器无故障后.就需要检查数据库是否有出现阻塞 当时数据库的生产环境中主表数据量超过2000w,子表数据量超过1亿,且更新和新增频繁.再加上做了同步镜像,很消耗资源. 这时就要新建一个会话,大概需要了解以下几点: 1.当前活动会话量有多少? 2.会话运行时间? 3.会话之间有没有阻塞? 4.阻塞时间 ? 查询阻塞的方法有很多.有sql

sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后)

原文:sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后) 一.概述 IO 内存是sql server最重要的资源,数据从磁盘加载到内存,再从内存中缓存,输出到应用端,在sql server 内存初探中有介绍.在明白了sqlserver内存原理后,就能更好的分析I/O开销,从而提升数据库的整体性能. 在生产环境下数据库的sqlserver服务启动后一个星期,就可以通过dmv来分析优化.在I/O分析这块可以从物理I/O和内存I/O二方面来分析, 重点分