ehxz 发表于 2006-12-18 22:37:20

用SQL测试具有百万条记录的数据库

  如果没有现实的数据集的话,进行基准测试就完全是浪费时间。Arthur Fuller向你展示了你可以怎样设置你的测试,让它能顺利测试那些包含百万行以上数据的数据库,并且返回更准确的测试结果。<br />  <br />  TechRepublic免费发行了一种SQLServer时事通讯,该刊每周二刊发,里面有hands on提示,它可以帮助你更熟练的使用这个强大的相关数据库管理系统。<br />  <br />  进行基准测试的时候,你很可能会采取下面的步骤:设计一个数据库,它的任何一个表格里面都是连一行数据都没有(因为所有的查询都是闪电式进行的),在该数据库里面填上几行测试数据,然后再测试该数据库。不过,如果你知道你要测试的数据库包含着上百万行的数据,其中的每个表格都被填得满满的,那么,你认为你得到的测试结果的准确率会如何呢?<br />  <br />  为了了解当测试的数据库包含上百万行的数据时会出现什么样的情况,你有必要在现有的表格的基础上将它的行数增加到大约一百万(这个表格原来有1,000行)。你还要给所有的行都设一个主键。这些工作的每一项你都是分开做的,就像下面的编码所显示的:<br />  <br />  USE northwind<br />  <br />  SELECT COUNT(*) FROM <br />  <br />  SELECT * INTO TempTable FROM <br />  <br />  SELECT COUNT(*) FROM <br />  <br />  GO<br />  <br />  DECLARE @i Integer<br />  <br />  SET @i = 1<br />  <br />  WHILE @i < 10 BEGIN INSERT INTO TempTableSELECT * FROM TempTable SET @i = @i + 1 END<br />  <br />  SELECT COUNT(*) FROM TempTable<br />  <br />  SELECT Identity( int, 1, 1 ) AS PK, * INTO BigTable FROM TempTable<br />  <br />  GO<br />  <br />  SELECT COUNT(*) FROM BigTable<br />  <br />  GO<br />  <br />  DROP TempTable<br />  <br />  CREATE CLUSTERED INDEX BigTable_Index<br />  <br />  ON BigTable (PK)<br />  <br />  这个编码产生了一万行数据,也就是说在原来的表格的基础上增加了九倍的行数;接下来它会用SELECT语句来给该表添加一个主键。<br />  <br />  现在你可以用一个现成的数据集来开始进行你的基准测试了。如果你的这个现成的数据集需要上千万的行的话,你只需要修改WHILE@I这一命令行,将上限设置成10,000,000就行了。<br />  <br />  注意:尽管写出一个产生数据的工具是可能的,这个提示里面却并没有讲这些。不过,它里面也有一些可以用来产生数据的工具。Sybase PowerDesigner就包含了一个很巧妙的工具,它可以让你把带有示例数据的文本文件倒入到相应的表中,并且能依照表之间的各种关联关系生成不同的关系树。
页: [1]
查看完整版本: 用SQL测试具有百万条记录的数据库