我有使用SQLserver的Web应用程序。在db中我有一个大表(3GB)。所有数据库都有4GB。问题是来自另一个表(不是那个大表)的查询有时非常慢。有时查询需要几秒钟,但有时相同的查询需要几分钟。
我的问题是:一个大表可以减缓另一个表中的查询吗?
因为我使用的是sql-server-2008快速版,限制为1 GB RAM和10 GB数据库大小,这可能是个问题吗?改变sql server版本会解决我的问题吗?大约有50个用户一直使用应用程序。
答案 0 :(得分:0)
通常,表A的简单存在不应该对不涉及表A的表B的查询产生任何影响。也就是说,如果应用程序X正在查询表B,同时应用程序Y正在查询表A.并且针对A的查询需要做很多工作,因为这会降低对表B的查询速度,因为服务器只有很大的功能。
我可以想到一个大表的存在可能会减慢对另一个表的查询的速度。例如,如果磁盘是用小表B的部分进行分段,然后是大表A,那么更多的是小表B,对B的任何访问都必须跨越硬盘的较大部分。但哇,我怀疑这将是一个大问题。
我认为可能有后台进程,比如累积优化器的表统计信息,就像在对小表运行查询时一样,它会启动大表。也许对内部人员有更多了解的人可能会对这样的问题进行权衡。
答案 1 :(得分:0)
它可能与RAM相关,SQL服务器在RAM中缓存数据,如果一个非常大的表被缓存,这可能是以其他表未被缓存为代价,因此从磁盘访问速度较慢。
这只是一个理论,但您可能想在
中尝试查询https://www.mssqltips.com/sqlservertip/2393/determine-sql-server-memory-use-by-database-and-object/
您为SQL服务器分配了多少RAM,以及有多少其他数据库/事情在进行?