【问题标题】:Large table in sqlserversql server 中的大表
【发布时间】:2014-01-15 14:21:41
【问题描述】:

我有使用 SQLserver 的 Web 应用程序。在 db 中,我有一张大表(3GB)。所有数据库都有 4GB。问题是来自另一个表(不是那么大)的查询有时非常慢。有时查询需要几秒钟,但有时相同的查询需要几分钟。

我的问题是:一个大表可以减慢另一个表的查询速度吗?

因为我使用的是 sql-server-2008 express edition,有 1 GB RAM 和 10 GB 数据库大小的限制,这会不会有问题?更改 sql server 版本会解决我的问题吗?一直有大约 50 个用户在使用应用程序。

【问题讨论】:

    标签: java database performance sql-server-2008


    【解决方案1】:

    一般来说,表 A 的简单存在不应该对不涉及表 A 的针对表 B 的查询产生任何影响。也就是说,如果应用程序 X 正在查询表 B,同时应用程序 Y 正在查询表 A ,而针对 A 的查询需要做很多工作,而这会减慢针对表 B 的查询,因为服务器只有这么多的权力。

    我可以想到一个大表的存在可能会减慢对另一个表的查询速度。例如,如果磁盘被小表 B 的部分碎片,然后是大表 A,然后是更多的小表 B,则对 B 的任何访问都必须跨越硬盘驱动器的较大部分。但是哇,我怀疑这会是个大问题。

    我想可能有后台进程,比如为优化器累积表统计信息,当您对小表运行查询时,它们会在大表上启动。也许对内部有更多了解的人可以对这样的问题进行权衡。

    【讨论】:

      【解决方案2】:

      这可能与 RAM 相关,SQL Server 将数据缓存在 RAM 中,如果缓存了非常大的表,则可能以其他表未缓存为代价,因此从磁盘访问速度较慢。

      这只是一个理论,但您可能想尝试

      中的查询

      https://www.mssqltips.com/sqlservertip/2393/determine-sql-server-memory-use-by-database-and-object/

      您为 SQL Server 分配了多少 RAM,还有多少其他数据库/正在发生的事情?

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 2014-12-19
        • 2018-04-20
        • 2010-09-22
        • 2023-02-16
        • 1970-01-01
        • 1970-01-01
        • 2010-09-23
        • 2018-01-29
        相关资源
        最近更新 更多