关于SQL 2008数据库压缩后收缩(database shrink)的测试实验和性能比较
数据库收缩性能问题可能会涉及一个关于栈内页面压缩的漏洞http://support.microsoft.com/kb/963658这篇文章讨论中数据库收缩之后可能页面压缩(page compression)会被移除,也许后续开发会完善这功能,让收缩之后页面压缩重建。
总而言之,聚集索引是在压缩和收缩方面最好用的工具
测试实验环境参数
数据库Database: Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONEdatabase_name database_size unallocated space
------------- -------------- ----------------
test1 26619.56 MB 15833.65 MB
reserved data index_size unused
----------- ------------ ------------ ----------
10418984 KB 6820040 KB 3571560 KB 27384 KB
包含一个表格: table1
Sp_spaceused table1
Normal
0
7.8 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONEname reserved
data index_size unused rows
----- ------------- ------------ ------------ --------- --------
table1 10417560 KB 6819464 KB 3570824 KB 27272 KB 62113305 Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONESp_helpindex table1:
i_table_1 clustered located on PRIMARY SalesOrderDetailID
i_table1_1 nonclustered located on PRIMARY RowNumber, SalesOrderID, CarrierTrackingNumber, rowguid
SELECT PageCompressedAgain = page_count FROM
sys.dm_db_index_physical_stats (
DB_ID (),
OBJECT_ID ('table1'),
NULL, NULL, 'SAMPLED');
852433
439130
delete from table1 where RowNumber%47 =1
(1321559 row(s) affected)
测试脚本:
print getdate()
dbcc shrinkfile(1)
print getdate()
测试1:
聚集索引条件下,行压缩(cluster index + row compression)
Compression –log 4.85 GB (5,218,172,928 bytes)
SELECT PageCompressedAgain = page_count FROM sys.dm_db_index_physical_stats (
DB_ID (),
OBJECT_ID ('table1'),
NULL, NULL, 'SAMPLED');
561638
439130
Sp_spaceused table1
table1 60791746 8046304 KB 4493104 KB 3552312 KB 888 KB
shrink log 1.40 GB (1,511,325,696 bytes)
收缩之后:
PageCompressedAgain
--------------------
561638
439130
table1 60791746
8046528 KB 4493104 KB 3552288 KB 1136 KB
Normal
0
7.8 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONEdatabase_name database_size
unallocated space
-------------- --------------- ------------------
test1 9300.81 MB 0.19 MB
reserved data index_size unused
----------- ------------ ------------- ---------
8047936 KB 4493688 KB 3552960 KB 1288 KB
Mar 26 2010 3:46PM Normal 0 7.8 pt 0 2 false false false EN-US ZH-CN X-NONEDbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ --------- ----------- ----------- ---------- --------------
12 1 1006016 256 1006000 1006000
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Mar 26 2010 3:52PM
耗时6分钟.
测试2:
在聚集索引条件下,页压缩(cluter index + page compression)
Compression LOG 1.16 GB (1,248,985,088 bytes)
Shrink LOG 1.70 GB (1,828,716,544 bytes)
SELECT PageCompressedAgain = page_count FROM sys.dm_db_index_physical_stats (
DB_ID (),
OBJECT_ID ('table1'),
NULL, NULL, 'SAMPLED');
PageCompressedAgain
--------------------
133567
439130
Shrink:
Mar 29 2010 7:15AM
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
12 1 577032 256 577016 577016
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Mar 29 2010 7:25AM
耗时10 分钟
测试3:
删除聚集索引后做行压缩,之后收缩数据文件
Compression LOG 7.82 GB (8,404,074,496 bytes)
SELECT PageCompressedAgain = page_count FROM sys.dm_db_index_physical_stats (
DB_ID (),
OBJECT_ID ('table1'),
NULL, NULL, 'SAMPLED');
PageCompressedAgain
--------------------
541300
392331
Shrink --log 1.87 GB (2,011,627,520 bytes)
PageCompressedAgain
--------------------
541600
451801
Mar 26 2010 4:29PM
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
12 1 999512 256 999496 999496
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Mar 26 2010 7:04PM
耗时2小时35分钟
测试 4
删除聚集索引后做页压缩
compression log 140MB
shrink log 2.06 GB (2,212,823,040 bytes)
SELECT PageCompressedAgain = page_count FROM sys.dm_db_index_physical_stats (
DB_ID (),
OBJECT_ID ('table1'),
NULL, NULL, 'SAMPLED');
PageCompressedAgain
--------------------
127000
437707
Mar 29 2010 5:55PM
DbId FileId CurrentSize MinimumSize UsedPages EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
12 1 571048 256 571032 571032
Mar 29 2010 8:10PM
耗时2小时10分钟.
结论
1. 无论是row compression还是page compression,有clustered index的情况下,shrink的性能都比没有clustered index的要快几十倍。
2. Row compression 的过程生成的log是page compression的4-5倍。
3. 在同样的compression模式下,没有clustered index的数据库shrink所生成的log 要略多于 有clustered index的数据库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25175503/viewspace-704935/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25175503/viewspace-704935/
- 点赞
- 收藏
- 分享
- 文章举报
- 关于LINQ和SQL操作数据库的性能测试(转)
- 使用LINQ to SQL更新数据库(下):性能测试
- sql查询like和charindex和substring比较性能测试
- 数据库性能对比测试实验
- 关于web服务器的性能测试实验
- Loadrunner测试数据库性能,测试SQL语句的脚本例子
- 关于web服务器的性能测试实验
- sql server merge into 与update 批量更新1 百万测试数据的性能比较
- SQL 2008收缩数据库日志文件的方法
- SQL server 2008 关于XML类型数据 功能总结及性能测试
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- Oracle 性能测试一:嵌套SQL的查询速度比较分析(初级)
- 存储过程性能测试之_Sql执行速度的比较
- 关于ResultSet分页以及Nutz Dao 数据库分页性能比较
- (原创)两年前写的一个关于六款WEB上传组件性能测试与比较
- SQL server 2008 关于XML类型数据 功能总结及性能测试
- 测试发现数据库性能问题后的SQL调优
- SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)
- 2.Benchmark SQL 数据库测试工具代码——关于表类
- SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)