一般造成 mdf 文件过大的原因是:
1.索引碎片过多,
2.频繁的数据库操作,如临时表/存储过程等的占用大量的空间,而没有及时释放.
3.异常状况下占用的数据库空间没有释放掉.....
1:整理索引碎片
你可能已经创建好了索引,并且所有索引都在工作,但性能却仍然不好,那很可能是产生了索引碎片,
你需要进行索引碎片整理。
什么是索引碎片?
由于表上有过度地插入、修改和删除操作,索引页被分成多块就形成了索引碎片,如果索引碎片严重,
那扫描索引的时间就会变长,甚至导致索引不可用,因此数据检索操作就慢下来了。
有两种类型的索引碎片:内部碎片和外部碎片。
内部碎片:为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,
最后一页往往装不满,于是形成了内部碎片。
外部碎片:为了共享要分段,在段的换入换出时形成外部碎片,比如 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
(
评论1
最新资源