造成mdf文件过大的原因.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
造成mdf文件过大的原因

一般造成mdf文件过大的原因是: 1.索引碎片过多, 2.频繁的数据库操作,如临时表/存储过程等的占用大量的空间,而没有及时释放. 3.异常状况下占用的数据库空间没有释放掉:整理索引碎片   你可能已经创建好了索引,并且所有索引都在工作,但性能却仍然不好,那很可能是产生了索引碎片,你需要进行索引碎片整理。   什么是索引碎片?   由于表上有过度地插入、修改和删除操作,索引页被分成多块就形成了索引碎片,如果索引碎片严重,那扫描索引的时间就会变长,甚至导致索引不可用,因此数据检索操作就慢下来了。   有两种类型的索引碎片:内部碎片和外部碎片。   内部碎片:为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。   外部碎片:为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。   如何知道是否发生了索引碎片?   执行下面的SQL语句就知道了(下面的语句可以在SQL Server 2005及后续版本中运行,用你的数据库名替换掉这里的AdventureWorks):  SELECT object_name(dt.object_id) Tablename,si.name   IndexName,dt.avg_fragmentation_in_percent AS   ExternalFragmentation,dt.avg_page_space_used_in_percent AS   InternalFragmentation   FROM   (   SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent   FROM sys.dm_db_index_physical_stats (db_id(AdventureWorks),null,null,null,DETAILED   )   WHERE index_id 0) AS dt INNER JOIN sys.indexes si ON si.object_id=dt.object_id   AND si.index_id=dt.index_id AND dt.avg_fragmentation_in_percent10   AND dt.avg_page_space_used_in_percent75 ORDER BY avg_fragmentation_in_percent DESC   执行后显示AdventureWorks数据库的索引碎片信息。   图 3 索引碎片信息   使用下面的规则分析结果,你就可以找出哪里发生了索引碎片:   1)ExternalFragmentation的值10表示对应的索引发生了外部碎片;   2)InternalFragmentation的值75表示对应的索引发生了内部碎片。   如何整理索引碎片?   有两种整理索引碎片的方法:   1)重组有碎片的索引:执行下面的命令   ALTER INDEX ALL ON TableName REORGANIZE   2)重建索引:执行下面的命令   ALTER INDEX ALL ON TableName REBUILD WITH (FILLFACTOR=90,ONLINE=ON)   也可以使用索引名代替这里的“ALL”关键字重组或重建单个索引,也可以使用SQL Server管理工作台进行索引碎片的整理。 图 4 使用SQL Server管理工作台整理索引碎片   当对应索引的外部碎片值介于10-15之间,内部碎片值介于60-75之间时使用重组,其它情况就应该使用重建。   值得注意的是重建索引时,索引对应的表会被锁定,但重组不会锁表,因此在生产系统中,对大表重建索引要慎重,因为在大表上创建索引可能会花几个小时,幸运的是,从SQL Server 2005开始,微软提出了一个解决办法,在重建索引时,将ONLINE选项设置为ON,这样可以保证重建索引时表仍然可以正常使用。   虽然索引可以提高查询速度,但如果你的数据库是一个事务型数据库,大多数时候都是更新操作,更新数据也就意味着要更新索引,这个时候就要兼顾查询和更新操作了,因为在OLTP数据库表上创建过多的索引会降低整体数据库性能。   我给大家一个建议:如果你的数据库是事务型的,平均每个表上不能超过5个索引,如果你的数据库是数据仓库型,平均每个表可以创建10个索引都没问题。 整理索引碎片 use database --对指定的整个数据库所有表进行重新组织索引 set

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档