`
骑猪逛街666
  • 浏览: 141492 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

阿里云SQL Server最佳实践:高CPU使用率问题排查

阅读更多
阅读原文请点击:http://click.aliyun.com/m/23114/
摘要: 在阿里云SQL Server最佳实践系列在线直播中,阿里云数据库专家汪建明总结了7大问题并结合案例为大家分享了阿里云SQL Server高CPU使用率问题排查的实践经验。

摘要:在阿里云SQL Server最佳实践系列在线直播中,阿里云数据库专家汪建明总结了7大问题并结合案例为大家分享了阿里云SQL Server高CPU使用率问题排查的实践经验。


本期直播回顾链接:http://yq.aliyun.com/webinar/play/237  更多系列精彩课程直播,尽在 云数据库经典案例和最佳实践专场,等待你的参与!



以下内容均根据演讲视频以及PPT整理而成。

演讲者简介
汪建明(花名:风移),近10年SQL Server数据库DBA经验。曾就职于新蛋中国6年、新蛋美国3年半。现任阿里云数据库专家,负责SQL Server产品线。

分享议程
本文将按照SQL Server高CPU使用率问题排查的7个方面进行分享:
缺失索引 (Missing Indexes)
索引碎片 (Indexes Fragmentation)
数据类型转换 (Data Conversion)
非SARG查询 (Non-SARG Query)
参数嗅探 (Parameter Sniffing)
统计信息 (Statistics)
TOP CPU查询 (TOP SQL)

一、缺失索引 (Missing Indexes)

690026b766004839d0f2897aaeae6d2bc5722295

为什么索引缺失会降低SQL Server的CPU使用率?
真正排查出的高CPU使用率的第一大因素就是Missing Indexes,那么为什么索引的缺失是SQL Server CPU使用率的第一大杀手呢?要回答这个问题就需要首先回答什么是索引。索引的结构其实是基表的某一列或者某几列数据的投影,并且这些列的数据是按照升序或者降序排列完毕之后的特殊结构,这个特殊结构使得查询的性能会更加高效,特别是对于经常会使用到的查询语句。既然索引特殊的结构已经排序完成了,那么在进行检索的时候效率就会非常高,可以很快地定位到数据所在的位置,这样就能够大大降低SQL Server本身的IO的消耗,IO的消耗降低之后CPU的使用率自然也会下降。

发现缺失索引的方法
如何发现哪些表中又缺失了哪些索引呢?第一种方法就是DTA (Database Tuning Advisor)。第二种方法就是执行计划中存在索引缺失的警告,也就是当执行某一条语句的时候,执行计划会报出一个警告提示这里缺少一个索引,这个时候就可以将缺失的索引找出来并创建它。第三种方法就是访问系统的动态视图,大致有sys.dm_db_missing_index_group_stats、sys.dm_db_missing_index_group_stats以及sys.dm_db_missing_index_details这三个视图,具体怎样去使用大家可以查阅帮助文档。

不要盲目地创建缺失的索引
在创建缺失索引时一定不要盲目,一定要确保创建的缺失索引是有效的,这样做的第一个原因是创建索引会导致一定的存储开销,因为索引的数据结构也会占用数据文件空间。第二个原因是DML操作会导致索引的维护成本增加,因为索引的结构是基于表的某列或者某几列组合出来的数据结构,这个数据结构的一致性一定是随着基表的数据变化而变化的,当我们进行Delete、Insert以及Update操作的时候也需要去维护索引的数据结构,因为需要保证索引结构数据与基表数据的一致性,所以就会带来索引维护成本的上升。

这部分的相关Demo请参考云栖社区的博客:https://yq.aliyun.com/articles/72265

二、索引碎片 (Indexes Fragmentation)
刚才提到了索引缺失会导致CPU使用率的升高,而另外一个问题是
阅读原文请点击:http://click.aliyun.com/m/23114/
分享到:
评论

相关推荐

    sqlserver cpu使用率高排查

    SQL Server CPU 使用率高排查 在使用 SQL Server 过程中,可能会出现 CPU 使用率高达 100% 的情况,这种情况可能是由于多种原因导致的。下面将从几个方面对此进行分析和排查。 1. Max degree of Parallelism 设置...

    SQL Server 最佳实践分析器使用小结

    SQL Server 最佳实践分析器使用小结 SQL Server 最佳实践分析器是 Microsoft SQL Server 开发团队开发的一个数据库管理工具,可以检测设计的数据库是否遵循 SQL Server 操作和管理的最佳实践准则。这些准则公认有助...

    阿里云RDS SQL Server CPU高使用率性能优化PPT

    综上所述,阿里云*** Server CPU高使用率的性能优化涉及多方面的策略。了解并应用这些策略有助于提高数据库的性能,从而确保业务的顺畅运行。对于数据库管理员来说,实施这些优化措施需要对数据库性能指标进行密切...

    SQL Server 最佳实践分析器 [免费版]

    Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你检测设计的数据库是否遵循SQL Server操作和管理的最佳实践准则。这些准则公认有助于...

    SQLSERVER排查CPU占用高的情况

    因此,掌握如何有效排查与解决 SQL Server CPU 使用率过高的问题,对于 DBA(数据库管理员)以及开发人员来说非常重要。 #### 硬件环境 在本案例中,我们面对的是一台 Windows 2008 R2 操作系统的服务器,配置为 64...

    SQLServerExecutionTimes

    SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = 0 ms. SQL Server Execution Times: CPU time = 0 ms, elapsed time = ...

    SQLServer2014管理最佳实践第3版

    资源名称:SQL Server 2014管理最佳实践 第3版内容简介:微软MVP倾情之作管理SQL Server 2014的最佳实践这本丰富而全面的指南阐明了成功管理SQL Server所需的技能,包括变更管理、安全性、性能调整、监控和备份。...

    SqlServer2016Alwayson高可用性方案.docx

    在本文中,我们将介绍如何搭建 SqlServer2016 高可用性方案,使用 AlwaysOn 技术来实现数据库的高可用性。本方案将指导您从头开始搭建 Server2016 及 SqlServer2016 高可用方案,确保您的数据库始终保持高可用性。 ...

    SQL Server最佳实践核对清单.pdf

    2. SQL Server最佳实践:文件中提到了“最佳实践核对清单”的概念。最佳实践是指一系列经过验证的、推荐的方法和步骤,旨在帮助专业人员更高效地完成工作,同时也能够避免常见的错误和问题。这些最佳实践可以应用于...

    解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包

    在SQLSERVER数据库的使用过程中,有时会出现一个棘手的问题,即驱动程序无法通过安全套接字层(SSL)加密与SQL Server建立安全连接。这个问题通常表明数据库连接在尝试使用SSL进行加密时遇到了障碍,可能影响数据的...

    使用CPU计数器监视SQL Server性能的

    在SQL Server性能优化中,使用CPU计数器是至关重要的工具,可以帮助我们识别和解决可能导致系统瓶颈的问题。本文主要探讨了几个关键的CPU资源消耗点,以及如何通过监控和调整来提升SQL Server的性能。 首先,上下文...

    Spotlight on SQL Server

    3. **Spotlight on SQL Server特性**:这款工具可能提供了实时性能监控,包括CPU使用率、内存消耗、磁盘I/O等关键指标;可能有报警机制,当数据库出现异常时自动通知管理员;还可能有性能分析工具,帮助找出影响性能...

    SQL_Server_2008_R2_CPU_和_内存_最大优化_分配

    SQL Server 2008 R2 引入了一个重大改进,即资源控制器,这使得管理员能够更有效地管理和优化服务器的CPU及内存分配。相对于之前的版本,如SQL Server 2005,资源控制器提供了一种全新的策略来解决多数据库环境下...

    SQLServer性能监控指标说明.docx

    * CPU使用率:CPU使用率是SQL Server的CPU使用情况,了解CPU使用率可以帮助我们了解SQL Server的性能。 * 等待事件:等待事件是SQL Server等待某个事件的过程,了解等待事件可以帮助我们了解SQL Server的性能。 ...

    kettle链接SQL server驱动 sqljdbc

    总的来说,了解并正确使用SQL JDBC驱动对于Kettle与SQL Server的集成至关重要,特别是对于那些在Java环境中进行数据处理和分析的项目。正确选择和配置驱动,可以确保数据迁移、数据清洗和其他数据操作的顺利进行。在...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握这门复杂的编程语言,以切合实际的方案来解决复杂的实际问题...

    centos7安装+还原+卸载sqlserver.docx

    在开始安装 SQL Server 之前,我们需要配置阿里云在线 yum 源和微软官方的 SQL Server 源。首先,我们使用以下命令下载阿里云在线 yum 源: `wget -O /etc/yum.repos.d/CentOS-Base.repo ...

    AnyBackup SQLServer备份与恢复最佳实践.pdf

    AnyBackup SQL Server备份与恢复最佳实践 SQL Server 备份恢复最佳实践是指在 SQL Server 环境中,确保数据安全、可靠地备份和快速恢复数据的方法和技术。本文档将从 SQL Server 备份恢复的基础知识入手,介绍 SQL...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

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

Global site tag (gtag.js) - Google Analytics