SQL Server 2000索引的能与不能(DO和DON’T)

 
   | |

导读:专家在本文中详细阐述了SQL Server 2000中最好和最差的索引实践。

关键词:SQL Server 2000 索引最好实践 最差实践

正在加载数据... 【TechTarget中国原创】在这三部分特性的第二部分,Edgewood Solutions公司Jeremy Kadlec概述了SQL Server 2000中最好和最差的索引实践。 【TechTarget中国原创】

在这三部分特性的第二部分,Edgewood Solutions公司Jeremy Kadlec概述了SQL Server 2000中最好和最差的索引实践。

索引能够做什么?

Kadlec:

  • 没有系统是一成不变的,因此我们必须不断地修改索引以支持使用变化。
  • 高选择性的(不同的)数据的索引字段。如果数据选择性低下,那么SQL Server将无法在索引中生成大量值。
  • 如果是非常大型的数据库(VLDB),那么可以将数据和聚簇索引与非聚簇索引分开,并存储在其它物理硬盘上的独立文件组中。
  • 从整体角度上处理索引以便保证索引对应用一部分有益时不会对另一部分有害。
  • 平衡每个表的索引数目以便减少SQL Server在执行事务处理时的工作量。这样将减少整体存储空间支持,同时在时间和I/O方面仍然实现高效的处理。
  • 同时,平衡还有助于保证新索引不会在对应用的一部分有益的同时损害另一部分的性能。要对索引进行全面的测试,并重新检查一个位置的修改不会损害应用另一部分。
  • 在测试阶段中检查查询计划,以保证索引可以改进查询时间以及预期的资源使用率。
  • 为每个索引选择恰当的填充因数。如果表内数据只会有很少的修改,那么索引就要配置一个高填充因数,如,接近于100%,这样将节省存储空间。如果表内数据会有许多的修改,那么我们可以选择一个较低的填充因数,如65%到85%,这样当数据添加到页时,索引重新建立的页划分将是最小的。
  • 定期使用DBCC SHOWCONTIG命令来检查表、索引或数据的碎片。根据碎片程度,定期重建索引。
  • 如果在短时期内,索引出现大量的碎片,那么我们需要检查数据是如何插入、更新以及删除的,以便确认我们是否需要一个较低的填充因数。同时,确定是否可以修改代码来减少碎片的数量。
  • 在索引创建、删除和/或重建时捕捉性能基线,以确定每个操作对性能的影响。
  • 在变更管理过程之后引进新索引测试和部署。保证用文档记录所有修改。
  • 按周、月或季度执行数据库维护。只有不断地维护,SQL Server才可以完美地运行。

索引不能做什么?

Kadlec:

  • 避免表出现热点。当所有事务都访问表的相同位置(如,表格末端)以及引发线路争夺问题时,就会出现。
  • 不要在查询中使用索引提示来替代SQL Server优化器索引选择,除非所有的选项都用完了。
  • 避免页切分。它是用在现有数据页空间无法再存储新记录行的时候。当出现这种情况时,SQL Server将把一半的数据转移到新的页面。最终结果是,原先的页面存储了一半数据而新的页面存储了另一半数据。这是一个非常耗费资源的操作,因为SQL Server必须完成记录行的存储及后续处理。
  • 不要建立或维护不必要的重复索引。
 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录