当遇到数据库的性能问题时,其中一个最大的性能提升方法可以通过优化索引来实现。索引可以改善数据访问,这样我们就不需要扫描整个表,因为这会消耗大量的CPU、IO和内存资源。随着时间的推移,索引可能会产生碎片,从而导致SQL Server性能下降、事务时间处理时间变长、阻塞和低吞吐量。 索引碎片的程度取决于表的碎片,其中这可能是由页拆分造成的。
当执行插入或更新语句同时一个页的数据超过页面总容量时,就会发生页拆分。数据自动填充到另一个页面是支持数据存储所必需的。当发生页拆分时,SQL Server将一半的数据保留在原来的页上,而另一半数据则存储到另一个页上。这个操作的开销主要是在时间和并发量上。
页……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
当遇到数据库的性能问题时,其中一个最大的性能提升方法可以通过优化索引来实现。索引可以改善数据访问,这样我们就不需要扫描整个表,因为这会消耗大量的CPU、IO和内存资源。随着时间的推移,索引可能会产生碎片,从而导致SQL Server性能下降、事务时间处理时间变长、阻塞和低吞吐量。
索引碎片的程度取决于表的碎片,其中这可能是由页拆分造成的。当执行插入或更新语句同时一个页的数据超过页面总容量时,就会发生页拆分。数据自动填充到另一个页面是支持数据存储所必需的。当发生页拆分时,SQL Server将一半的数据保留在原来的页上,而另一半数据则存储到另一个页上。这个操作的开销主要是在时间和并发量上。页拆分最终是由过高的索引填充因数和pad_index而引起页面过度压缩所造成的。
消除索引碎片既是艺术也是技术,同时也是在不断变化的应用环境下保证数据库高性能的长期过程。接下来,我们将探讨以下内容:
- 理解数据
- 分析索引
- 理解如何创建索引
- 确定碎裂的索引
- 重建碎裂的索引
- 配置数据库
技巧1:理解数据
首先需要的是理解所存储的数据以及数据的访问方式。对于新的应用,可以与用户和应用开发人员一起探讨他们的应用流程和数据使用需求——数据访问(SELECT)和数据操作(INSERT、UPDATE和DELETE)。对于已有的系统,执行 sp_depends,它将找出与表相关的数据库对象。如果在前端、中间层或具体代码中嵌入了任何的T-SQL,那么可以与应用开发人员交谈以了解它们的作用。同时,与用户交谈以理解他们所遇到的应用问题。在任一种情况下,都可以利用工具或脚本来更好地理解业务流程和索引优化的可能,同时要获得用户和开发人员的确认。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
分析SQL Server级联删除的实现
SQL Server 2000与Oracle 8i相比,SQL Server级联删除有太多的限制,本文就为您介绍SQLServer级联删除的实现方法,供您参考。
-
从SQL Server中的数据更新到Oracle表中
我有两个客户端服务程序。一个用的是Oracle7数据库,而另一个用的是SQL Server 2000。现在我想把SQL Server 2000中的某些表数据更新到Oracle数据库表中……
-
在SQL Server 2000的视图中小心使用*符号(一)
有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下文中的例子吧。
-
SQL Server索引设计和调优技巧大全
本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。