`

工作中遇到的SQL Server索引相关问题(过多、缺失、启用)

阅读更多
直接上菜!
问题场景1:新增收款也没,速度响应太慢。数据库服务器CPU占用持续飚到90%以上。
运行环境:32位Win Server 2003企业版上装了SQL Server 2005 开发者版,AWE未成功开启。6G内存里,SQL Server只用到不到2G。
原因:三张核心大表上索引过多(每张表几十条索引……),且表上索引碎片过多,之前添加的索引维护计划由于客户禁用了代理导致任务计划无效,进而导致维护索引开销太大,插入和查询耗时均很长,经检测死锁发生频繁。
解决:
    1.根据碎片情况重建索引,重新配置AWE,生效后内存使用升到5G+,可是这部分工作的效果不大。开启AWE:http://msdn.microsoft.com/zh-cn/library/ms190673%28v=SQL.90%29.aspx
    2.删除主键索引外的绝大多数索引,涉及到插入的操作于是变快了很多。
    3.每隔三五小时,根据以下三张动态管理视图获取缺失一次索引
        sys.dm_db_missing_index_details
        sys.dm_db_missing_index_groups
        sys.dm_db_missing_index_group_stats 
      对比seek次数、开销和可提升倍数来选择添加哪些索引。反复几次之后,CPU占用大多时候在20%左右,繁忙时50%左右,高峰90%左右但大都会在10秒内降至正常水平。
    4.优化程序中逻辑读超高的查询,从而加快仍然较慢的查询操作。


问题场景2:开发给了一个多表连接的查询,很慢。
运行环境:Win7,SQL Server 2008 R2 64位
分析:查看io和耗时后,结合执行计划,发现对大表A的逻辑读次数奇高且先走这张表上的主键上建的非聚集索引,然后走主键上建的唯一聚集索引。貌似非聚集索引建的没有必要。
解决:删除冗余的非聚集索引。本想也删除唯一聚集索引然后再新建,发现行不通。通过Management Studio禁用唯一聚集索引后(天知道那会为什么要禁用),竟然不知道怎么重新启用了。最后看msdn发现rebuild一下就可以启用。alter index ix_name on 表A rebuild 其实还是通过Management Studio重建也一样。
看文档时发现个没见过的用法ALTER INDEX ALL REBUILD on 表A 见http://msdn.microsoft.com/zh-cn/library/ms190645%28v=sql.100%29.aspx
结果:查询的执行时间从12-17秒缩短至2秒左右,对表A的逻辑读从38W+降至7K多。不动现有表结构的话,这算暂时解决了。
分享到:
评论

相关推荐

    SQL Server智能提示插件

    例如,它可以分析SQL语句的执行计划,帮助用户识别潜在的性能瓶颈,如索引缺失、扫描过多或过度使用的连接操作。通过这种方式,开发者可以提前发现并解决性能问题,从而提高应用程序的整体性能。 在安装和使用方面...

    企业版SQLServer2014_x64

    在SQL Server 2014 企业版中,x64 版本主要指的是基于64位架构的操作系统环境下的安装包。相比32位版本,64位版本具有以下优势: 1. **内存容量**: 64位操作系统可以访问更大的物理内存空间,理论上最大支持16EB的...

    SQL 2005安装使用教程(pdf)

    5. **性能优化**:使用SQL Server Profiler监控查询性能,通过索引、查询优化和资源调优提高效率。 6. **报表服务 (SSRS)**:创建和分发交互式报表,支持多种数据源和格式。 7. **分析服务 (SSAS)**:提供多维数据...

    AutoIndex auto create missing indexes

    1. 数据库内置功能:某些数据库系统(如SQL Server的“Missing Indexes”)提供内置功能来识别缺失索引。 2. 第三方工具:有些第三方数据库优化工具能自动分析并建议或创建索引。 3. 自定义脚本:编写SQL脚本或应用...

    Arcgis 安装部署发布关键问题(一)

    在安装、部署和发布ArcGIS过程中,可能会遇到一系列的关键问题,这里我们将探讨其中的一些重要环节。 1. **系统需求** 在安装ArcGIS前,需确保计算机满足最低硬件和软件要求,包括处理器速度、内存大小、硬盘空间...

    数据库面试基础知识.docx

    8. **MySQL、SqlServer、Oracle 写出字符存储、字符串转时间** - **MySQL**: 使用 `CHAR()` 和 `VARCHAR()` 存储字符;使用 `STR_TO_DATE()` 转换字符串到日期时间格式。 - **SqlServer**: 使用 `CHAR()` 和 `...

    (完整版)U9V1.0安装说明.docx

    CLR配置文件(UFIDA.U9.SQL.CLRLib.dll)应放置在DBServer的特定目录下,若服务器上未存在,需手动拷贝。协同相关的索引位置和文档库也需要指定,确保文件夹名称无冲突且便于管理。数据库服务器的名称、访问用户名和...

    phpMyAdmin.zip

    3. **索引管理**:创建、修改和删除索引,包括主键和唯一索引。 4. **数据操作**:插入、更新、删除记录,支持多行编辑和批量操作。 5. **用户管理**:创建、修改和删除MySQL用户,设置权限。 6. **SQL查询**:提供...

    Sybase ASE 12.5 发行公告(Silicon Graphics IRIX).pdf

    Sybase Adaptive Server Enterprise (ASE) 是一款高性能的企业级数据库管理系统,由Sybase公司开发并维护。Sybase ASE 12.5 版本是针对Silicon Graphics IRIX 操作系统的发行版本,该版本针对IRIX平台进行了特别优化...

    在虚拟机上安装linux和oracle

    - **设置环境变量**:在用户的`.bash_profile`文件中设置ORACLE_HOME、PATH、LD_LIBRARY_PATH等相关环境变量。 5. **测试与优化** - **启动数据库服务**:使用SQL*Plus或EM进行数据库连接,验证Oracle是否能正常...

    windows XP常用系统命令集合TXT

    `cliconfg`命令启动SQL Server客户端网络实用程序,用于配置和管理SQL Server客户端的网络连接设置。 #### Clipbrd - 剪贴板查看器 `Clipbrd`命令启动剪贴板查看器,用于查看和管理剪贴板中的内容,包括最近复制和...

    WINDOWS 开始运行里的实用命令

    此工具可以帮助用户收集有关崩溃或错误的信息,并将其发送给 Microsoft 或开发人员以解决问题。 #### devmgmt.msc **命令**: `devmgmt.msc` **用途**: 打开设备管理器。这是一个用于查看和管理已安装硬件设备的工具...

    开始菜单运行里的常用命令

    - **应用场景**:配置SQL Server客户端的连接属性和网络协议。 #### Clipbrd - **作用**:启动剪贴板查看器。 - **应用场景**:查看和管理剪贴板中的内容,便于复制粘贴操作。 #### conf - **作用**:启动...

Global site tag (gtag.js) - Google Analytics