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小时或更长)的问题。
第一步 建立表结构,设置索引
第二步 执行 insert ..... select ..... 来生成 1千500万条数据
这个存储过程大概运行 40分钟,结束后,就产生了这个表,
通过“sql mangement studio”的表属性,可以看到该表的记录总数是 1千500多万条。
但是,我用sql查询执行一个简单的 select top 5 * from .... ,就没有反应了,查询就永远在进行中...
我进行查询取消,就变成永远的“取消查询”状态。
等待了10分钟也还是没有反应,于是我重启 sqlserver 2005 ,
紧接着,又一个问题出现了,sqlserver 2005 启动过程中不动了,永远在启动状态,奇怪?
难道 sqlserver 2005 是在继续刚才的取消操作(我怀疑)。
请诸位分析分析,是不是 sqlserver 存在大量插入后(能看到行数),但事后后台还在处理一些工作,
所以必须等待这个执行后(可能很长时间 1小时或更长)的问题。
2、我估计你在执行select top 5 * from 时数据并没有完全写成功,事务提交后,还有一个事务前滚的过程(也就是将归档数据写入数据文件),这个过程还是很长的。非法退出后,再启动这个数据库时,系统会自动执行回滚或前滚的动作,所以可能会等待很长时间,耐心点吧。
3、下次要是再处理这么大的数据量,就不要这样做了。数据要分段拷贝,表要建成分区表。等等吧
如果计算机内存和cpu的使用状况使用率低的话,
再看看selserver设置的
占用的CUP、内存的大小,低的话调高点