我正在使用一个asp.net MVC4项目并使用SQL Server 2008.我的数据库表包含100000行。此外,连接字符串属性的最大池大小设置为1000000,并将池设置为true。Sql timeout虽然最大池大小设置为1000000,但异常
我的表结构如下:
CREATE TABLE tblNews
(
ID int IDENTITY(1,1) NOT NULL,
Url nvarchar(300) UNIQUE NOT NULL,
PubDate datetime NOT NULL,
Active bit NOT NULL,
Hit int NOT NULL,
...
)
和如下有一个指标:
CREATE NONCLUSTERED INDEX indexTblNews_Url
ON tblNews(Url)
我选择的查询是:
CREATE PROC spNewsGet
@Url nvarchar(300)
AS
UPDATE tblNews
SET Hit = Hit + 1
WHERE Url = @Url
AND PubDate > GETDATE()
AND Active = 1;
SELECT
*
FROM tblNews
WHERE Url = @Url
AND PubDate > GETDATE()
AND Active = 1
ORDER BY PubDate DESC
在低评价的站点有没有问题,这完美的作品。但是在数据库大到100000行和网站有200万个单用户/日的情况下,它会崩溃。它在三个页面之一抛出SqlTimeout
异常。当我点击一个页面时,几乎所有的页面都会给出上述例外。
我检查了硬件性能和处理器消耗在I7 3.6 GHZ的%70,RAM的消耗是1.5 GB。但是有更多空的内存。我怎样才能克服这个问题?
任何帮助将不胜感激。
您确定在使用它们后关闭了连接吗?你有没有在SQL服务器中检查你的执行计划,看看你是否正确使用你的索引? – Paddy
那么,你正在通过PubDate搜索和订购,为什么不索引呢?另外,我猜'url'不是一个独特的列? – MikeSmithDev
@ Paddy我关闭了所有的连接,我也检查了.net分析器。没有开放的连接。 – Mesut