# SQL服务器性能调优技巧

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/18798.html | 发布：2023-03-23 | 更新：2023-03-23 | 分类：服务器vps推荐

查询调优通常是加速SQL服务器性能的最快方法。大多数情况下，系统级服务器性能（内存、处理器等）改进措施既无效又昂贵。

查询调优通常是加速SQL服务器性能的最快方法。大多数情况下，系统级服务器性能（内存、处理器等）改进措施既无效又昂贵。专家开发人员认为，大多数性能问题都可以追溯到编写不当的查询和低效的索引，而不是硬件限制。事实上，有些性能问题只能通过查询调优来解决。

 

![SQL服务器性能调优技巧](https://www.mfisp.com/wp-content/uploads/2022/10/af2427fd01687e951b5ec73642504cbd-1.png)

 

但是当涉及到SQL服务器性能查询调优时，DBA 经常会遇到从哪里开始的问题。您如何评估查询？您如何发现查询编写方式中的缺陷？您如何发现隐藏的改进机会？查询优化一半是科学，一半是艺术，因为没有正确或错误的答案，只有最适合给定情况的解决方案。

 

这里有 12 个快速提示，可以帮助 DBA 以可衡量的方式提高查询性能，同时确保特定更改确实提高了查询速度。

 

## **1. 基本查询分析**

 

DBA 需要了解所有层和有关昂贵查询的信息，以便隔离根本原因。有效的调优需要了解排名靠前的 SQL 语句、排名靠前的等待类型、SQL 计划、阻塞的查询、资源争用以及缺少索引的影响。从基础开始——在你投入之前准确地了解你正在处理的是什么会有所帮助。

 

**提示 1：了解您的表和行数**

 

首先，确保您实际操作的是表，而不是视图或表值函数。表值函数有其自身的性能影响。您可以使用 SSMS 将鼠标悬停在查询元素上以检查这些详细信息。通过查询 DMV 检查行数。

 

![SQL服务器性能调优技巧](https://www.mfisp.com/wp-content/uploads/2022/10/7c01473efade9958fd358fb649071947-1.png)

 

**技巧 2：检查查询过滤器、WHERE 和 JOIN 子句并注意过滤的行数**

 

如果没有过滤器，并且返回了大部分表，请考虑是否需要所有数据。如果根本没有过滤器，这可能是一个危险信号，需要进一步调查。这确实会减慢查询速度。

 

**技巧 3：了解表格的选择性**

 

根据前两个技巧中的表格和过滤器，了解您将使用多少行，或实际逻辑集的大小。我们建议使用 SQL 图表作为评估查询和查询选择性的强大工具。

 

**技巧 4：分析额外的查询列**

 

仔细检查 SELECT * 或标量函数以确定是否涉及额外的列。您带回的列越多，使用某些索引操作的执行计划可能变得越不理想，而这反过来又会降低性能。

 

## 2.高级查询分析

 

**提示 5：了解和使用约束会有所帮助**

 

了解和使用约束会在您开始调优时有所帮助。查看现有的键、约束、索引，以确保避免重复工作或与已存在的索引重叠。要获取有关索引的信息，请运行 sp_helpindex 存储过程：

 

**技巧 6：检查实际执行计划（而非估计计划）**

 

估计计划使用估计统计信息来确定估计行；实际计划在运行时使用实际统计信息。如果实际计划和估计计划不同，您可能需要进一步调查。

 

**技巧 7：记录您的结果，重点关注逻辑 I/O 的数量**

 

如果您不记录结果，您将无法确定更改的真正影响。

 

**提示 8：根据您的发现调整查询并一次进行小的、单一的更改一次**

 

进行过多的更改可能是无效的，因为它们会相互抵消！首先寻找最昂贵的操作。没有正确或错误的答案，只有最适合给定情况的答案。

 

**技巧 9：重新运行查询并记录所做更改的结果**

 

如果您发现逻辑 I/O 有所改进，但改进还不够，请返回技巧 8 检查可能需要调整的其他因素。继续一次进行一项更改，重新运行查询并比较结果，直到您对已解决所有可能的昂贵操作感到满意为止。

 

**技巧 10：如果您还需要更多改进，请考虑调整索引以减少逻辑 I/O**

 

添加或调整索引并不总是最好的做法，但如果您不能更改代码，这可能是唯一的选择你可以做。您可以考虑对现有索引、覆盖索引和过滤索引进行改进。

 

**技巧 11：重新运行查询并记录结果**

 

如果您进行了调整，请重新运行查询并再次记录这些结果。

 

**提示 12：设计出愚蠢的**

 

Lookout 以防止经常遇到的性能抑制因素，例如：代码优先生成器、滥用通配符、标量函数、嵌套视图、游标和逐行处理。

 

## 3. 使用数据库性能监控工具来促进查询调优。

 

传统的数据库监控工具专注于健康指标。当前的应用程序性能管理工具提供提示，但不能帮助找到根本原因。

 

提示：通过使用连续的数据库性能监控解决方案，您可以大大简化查询调优。数据库性能监控工具的推荐包括：

 

**SolarWinds ®数据库性能分析器 (DPA)**

 

SolarWinds Database Performance Analyzer (DPA) 可以将性能信息整合到一个地方。使用 DPA，您可以：

 
 
- 识别延迟的特定查询 
- 识别导致延迟的特定瓶颈（等待事件） 
- 显示已识别瓶颈的时间影响 

 

**SolarWinds® SQL Sentry**

 

SQL Sentry 是另一种SQL服务器性能调整工具，可以帮助您解决性能问题。使用 SQL Sentry，您可以查看历史性能并检测问题以更快地开始故障排除。

 

SQL 哨兵功能包括：

 
 
- 深入了解过去的SQL服务器性能 – 回到过去查看发生了什么变化 
- 查看 Top SQL 查询、阻塞和死锁分析——查看特定时刻以更好地了解正在运行的查询并分析阻塞详细信息 
- 优化查询——使用内置的 Plan Explorer 工具，您可以更轻松地分析查询统计信息和查看查询计划图

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
