目标 我的目标就是在事物大小和数据文件自动增长比率的基础上测试性能: 1、 测试1-增长率小,事务短,插入行数为X 2、 测试2-增长率小,事务短,插入行数为X*Y (比测试1中插入的行数要多) 3、 测试3-增长率大,事务短,插入行数为X*Y(和测试2中插入的行数相等) 4、 测试4-增长率小,一个事务中插入X*Y行 5、 测试5-增长率大(如测试3一样),一个事务中插入的行数为X*Y。 6、 测试6-自动增长率很大,事务很短 7、 测试7-自动增长率很大,事务很长 我将在结果中分析不同之处并且尝试……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
目标
我的目标就是在事物大小和数据文件自动增长比率的基础上测试性能:
1、 测试1-增长率小,事务短,插入行数为X
2、 测试2-增长率小,事务短,插入行数为X*Y (比测试1中插入的行数要多)
3、 测试3-增长率大,事务短,插入行数为X*Y(和测试2中插入的行数相等)
4、 测试4-增长率小,一个事务中插入X*Y行
5、 测试5-增长率大(如测试3一样),一个事务中插入的行数为X*Y。
6、 测试6-自动增长率很大,事务很短
7、 测试7-自动增长率很大,事务很长
我将在结果中分析不同之处并且尝试得出最后的结论。
注:该测试中不包括并发情况。
方法和代码描述
对于每个测试来说,我先测试数据库文件的原始文件大小和自动增长率。例如,原始大小=2 MB,自动增长率= 1 MB。
我还要测定该数据库文件的目标文件大小,所以要执行的第一个循环就应该是插入行,至少直到达到数据文件的目标大小为止。
while (select size from sysfiles where fileid = 1) <= <X> insert into ExpandDB select replicate ('a',8000)) |
这个环节中我们在ExpandDB表中一行一行地插入了8000个字节,直到数据文件大小超过X。ExpandDB表为heap表,没有索引或约束避免其他特殊优化或索引。
在执行第一个循环达到目标文件大小之后,为了比较我需要执行相同量的插入,但是这些插入行不能是增长中的文件。所以我就要截去一部分表并清除transaction log保证T-Log不会过早增长。
以下查询:
select count(*) from ExpandDB
返回在第一个环节中插入行的数量,
select size from sysfiles where fileid = 1 |
返回新数据库数据文件的大小。
以下语句将截断表和 T-Log:
truncate table ExpandDB go backup transaction ShrinkDB with truncate_only go |
下一步就是执行相同的插入命令:
declare @i int set @i = 1 while @i <= <Z> begin insert into ExpandDB select replicate ('a',8000) set @i = @i + 1 end |
<Z>就是在第一个环节中插入行后我们得到的表中的行数。另外一件很重要的事情就是在执行第一个环节和第二个环节中清除缓冲,消除缓冲所带来的不平等性,以便于进行性能比较:
DBCC DROPCLEANBUFFERS |
最后,每个行中将每次测试将进行三次(反复三次),务必保证结果的一致性。
因此,在每次反复中的第一步就是保证能够达到你想达到的数据文件原始大小。例如,缩小数据库文件:
DBCC SHRINKFILE (N'ShrinkDB' , 0, TRUNCATEONLY) |
性能监控工具
用SQL Profiler来检测性能。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。