日期:2014-05-17 浏览次数:20582 次
今天给大家分享一个”删除大量数据后SQL Server性能下降”的案例。一般而言,数据库数据减少后,应该有助于提高SQL server的整体性能。可是在这个案例中,情况恰恰相反。
症状
=========
- 删除大量数据后SQL Server性能下降
- 一些存储过程之前运行20分钟左右,现在需要运行2-3个小时。
背景信息
=========
- 大量数据通过DELETE语句而删除
- 数据删除后,客户进行了相关的维护工作 : 重建索引和更新统计数据
- 性能变慢的存储过程会对一些表做很多的”DELETE”,”INSERT”和”SELECT”操作。
调查
=========
- 相关的表都是堆( heap table)
- 这些表中并没有大量数据
- DBCC CHECKCONTIG 结果显示表很大,但其页的密度 (Page Density) 却相当小。
DBCC SHOWCONTIG scanning 'tblA' table...
Table: 'tblA' (322816212); index ID: 0, database ID: 14
TABLE level scan performed.
- Pages Scanned................................: 1779939 à13.6GB
- Extents Scanned..............................: 223475
- Extent Switches..............................: 223474
- Avg. Pages per Extent........................: 8.0
- Scan Density [Best Count:Actual Count].......: 99.56% [222493:223475]
- Extent Scan Fragmentation ...................: 23.65%
- Avg. Bytes Free per Page.....................: 8059.1
- Avg. Page Density (full).....................: 0.43%
DBCC SHOWCONTIG scanning 'tblB' table...
Table: 'tblB' (1005246636); index ID: 0, database ID: 14
TABLE level scan performed.
- Pages Scanned................................: 215600 à1.6GB
- Extents Scanned..............................: 27269
- Extent Switches.......................