我正在350GB
PC上运行约4000万行的数据库。
SQL服务器2014年,Win7的,AMD 8350 @ 4.8GHZ,16 GB的RAM和500 GB SSD(数据库托管在它自己的500 GB SSD,有一个吞吐量500MB / 500MB的读/写)。
数据库未更新,我只是在分析/读取它。与创建几个indexes
,任何join
,count(*)
等等,只需要不到1分钟,这是确定我的目的。我一直在对数据运行一些查询(运行单个联接查询40-50次后,它变慢了),现在花了1分钟的调用仍在20分钟后运行。
我会密切注意系统资源,SSD
当查询开始时我会看到踢进来,它读取20-30秒,然后121kB/second
在接下来的20分钟读取。这不是CPU问题或磁盘问题。我的RAM数量有限,但是当我第一次加载数据库时,调用运行良好,现在,25分钟后没有任何运行。
实际上,我再也无法查询数据库,即使是一条基本SELECT
语句,任何调用也要花费很长时间。我尝试重建索引并更新统计信息,但没有区别。
我对此没有很多经验,所以我的SQL查询很可能是不正确的,在这种情况下,我期望出现错误,或者它会以0个结果完成执行,但是都不会发生。
我想做的是在基于表ACALLS的时间之前的5秒钟内计数“ TypeID”的所有实例。
SELECT ACALLS.StartTime, ACALLS.Time, ACALLS.ServerIP, ACALLS.SRVR, ACALLS.calls, ACALLS.TOKEN, COUNT(TypeID) as ExecRate
FROM ACALLS
INNER JOIN MAINVIEW ON
MainView.TimeStamp BETWEEN ACALLS.StartTime and DATEADD(ss,-5,ACALLS.StartTime)
WHERE DATEPART(hour,MainView.TimeStamp) BETWEEN 10 and 13 and
CAST(MainView.TimeStamp as date) = '2015-12-09' and
MainView.TypeID = '123456789'
GROUP BY Acalls.STartTime, ACALLs.TIME, ServerIp,SRVR, ACALLS.CALLS, ACALLS.TOKEN
ORDER BY Acalls.StartTime