0
我有一个1000万条记录的表,需要加载全部内存(缓存应用程序)。SQL Server 2008在10 Mil记录表上选择性能 - 很慢?
表结构是这样的:
CREATE TABLE [TestTable] (
[Id] [int] IDENTITY(1,1) NOT NULL,
[RefId1] [int] NOT NULL,
[RefId2] [int] NOT NULL,
[RefId3] [int] NULL,
[Credits] [money] NOT NULL,
CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ([Id]),
CONSTRAINT [UK_Table] UNIQUE NONCLUSTERED ([RefId1],[RefId2],[RefId3])
)
表尺寸约为:364080 KB(数据) - 341648 KB(指数)
要加载该数据量与一简单的选择大约需要2分钟。
选择使用:
SELECT Id, RefId1, Credits, RefId3
FROM TestTable WITH (NOLOCK)
这是SQL Server正常速度的表现? 如何加快此查询?
查询是从缓存应用程序和SSMS进行测试的,结果几乎相同。
我正在使用SQL Server 2008 R2 Std,具有32 GB Ram和SSD磁盘RAID的16核心服务器上,没有其他应用程序或连接到SQL Server。
从性能计数器我可以看到没有队列/磁盘/ CPU使用,因为数据库完全在内存中。在执行查询时,唯一可见的信息是SQL和SSMS之间大约6 MB/s的缓慢网络流量。
所有测试都在本地机器上完成。
有关如何加速或在哪里寻找问题的任何建议?
我们正在缓存我们服务中的所有数据,以便更好地响应我们的交易系统。缓存表很少发生变化。该服务现在非常适用,但我们正在研究加速重启过程。 – Marko