sqlserver 2005 慢的问题,情况是这样的:我用一个存储过程创建一个表,里面包含 1千500万条数据,存储过程的具体流程如下。
第一步  建立表结构,设置索引
第二步  执行 insert ..... select ..... 来生成 1千500万条数据
这个存储过程大概运行 40分钟,结束后,就产生了这个表,
通过“sql mangement studio”的表属性,可以看到该表的记录总数是 1千500多万条。
但是,我用sql查询执行一个简单的 select top 5 * from ....  ,就没有反应了,查询就永远在进行中...
我进行查询取消,就变成永远的“取消查询”状态。
等待了10分钟也还是没有反应,于是我重启 sqlserver 2005 ,
紧接着,又一个问题出现了,sqlserver 2005 启动过程中不动了,永远在启动状态,奇怪?
难道 sqlserver 2005 是在继续刚才的取消操作(我怀疑)。
请诸位分析分析,是不是 sqlserver 存在大量插入后(能看到行数),但事后后台还在处理一些工作,
所以必须等待这个执行后(可能很长时间 1小时或更长)的问题。

解决方案 »

  1.   

    1、你这样操作后,估计日志不小。先看看数据文件和日志文件所在的磁盘是否足够大?
    2、我估计你在执行select top 5 * from 时数据并没有完全写成功,事务提交后,还有一个事务前滚的过程(也就是将归档数据写入数据文件),这个过程还是很长的。非法退出后,再启动这个数据库时,系统会自动执行回滚或前滚的动作,所以可能会等待很长时间,耐心点吧。
    3、下次要是再处理这么大的数据量,就不要这样做了。数据要分段拷贝,表要建成分区表。等等吧
      

  2.   

    查看计算机内存和cpu的使用状况,
    如果计算机内存和cpu的使用状况使用率低的话,
    再看看selserver设置的
    占用的CUP、内存的大小,低的话调高点
      

  3.   

    考虑分段操作,一个大的insert的操作会导致锁提升,分段后可以允许循环利用事务日志!