前几天是困难时期..,
我为大学生开发了在线入学申请流程,并且非常成功。
让我来谈谈我面临的问题,
- 问题涉及 2 个表:Student_AdmissionDetails(包含几乎 30-35 个字段,其中大多数具有 nvarchar(70) 的数据类型),另一个是StudentCategory
- 从录取过程开始几天后,Student_AdmissionDetails 有大约 3,00,000 条记录,StudentCategory 有 4 条记录
我开发了一个仪表板,我想在其中显示每个类别中申请的学生人数。为了实现这一点,我有以下查询。
Select count(*)
from Student_AdmissionDetails
inner join StudentCategory
on Student_AdmissionDetails.Id=StudentCategory.Id
where CategoryTypeName=@ParameterValue
上面的查询在单页上被触发了 3 次。并且有 250-300 名用户同时访问同一页面。除了录取表格上的内容外,还有 1300-2000 名学生同时填写表格。
我遇到的问题是,当我在 sql 服务器中运行上面的查询时,它会在 5 次中被解雇 1 次。它抛出错误,从内存访问对象时发生死锁(请原谅我不记得确切的错误)。
我从以下帖子中寻找的是:
- 这次我有点幸运,我没有让别人对我的编码不满意,但是谁能告诉我可以做些什么来克服这种情况。处理大型数据库的最佳方法是什么
- 我试图用 SQL 探查器解决这个问题,但由于还有 5 个应用程序正在运行类似的应用程序,我无法找出有多少用户试图访问相同的资源。
我想以下几点将有助于回答我的问题。
- 应用服务器和数据库服务器不同
- 数据库服务器在 Windows XP 上运行(我猜!)它有 128 GB 的 RAM
- 当我从 SQL Server 执行查询时,执行查询平均需要 12-15 秒。
为写这么长而道歉,但我真的需要帮助来学习这个:)