【问题标题】:When is a database considered a 'large database'? [closed]何时将数据库视为“大型数据库”? [关闭]
【发布时间】:2012-10-31 13:10:01
【问题描述】:

我有一个 SQL Server 2008 数据库,其中有一个包含大约 50 列的表。主键是日期时间。没有进一步的标准化,它只是一个表格,每几秒存储一次来自不同传感器的值,所以是整数和小数。 所以现在,在过去的一个月里,我插入了近 560k 行。 我的问题是,我什么时候会开始看到由于数据过多而导致的性能问题?

更具体地说: 到目前为止,我的要求是显示(在图表中)上个月(这不是这个问题的问题)。如果我总是只在上个月从数据库中获取一个由 PK 过滤的查询(如此索引),那么表有多大是否重要?

Ups,长篇大论 :) 感谢您的意见!

【问题讨论】:

  • 一年内你将拥有 600 万行。如果一行是 1K,那就是一个 6 GB 的表。在 10 年内,数据名义上是 60 GB。你应该很好。

标签: sql-server-2008 tsql database-performance


【解决方案1】:

只要确保您对表运行的任何查询都在执行索引搜索,而不是扫描或表扫描。您可以让 SSMS 生成一个查询计划来告诉您这一点。只要执行搜索,您可能有数亿行并且仍然具有出色的性能。

【讨论】:

    【解决方案2】:

    如果您的表每月增长 500k+,这将很快增长为一个大表:一年内您将拥有 6M+ 行。尽管您需要的查询看起来很简单并使用索引 PK 过滤数据,但我认为您可能会遇到性能问题。

    例如,您可能需要对数据(计数、总和)运行聚合查询,提供与前几个月的比较,或显示过去 x 个月的趋势演变。

    你可以考虑:

    • 清除策略,删除旧数据;
    • 构建指标表,汇总图表所需的汇总信息。

    【讨论】:

      【解决方案3】:

      除了上面的一些建议之外,为了帮助减少 IO 流失,我建议确保日期字段 (PK) 是一个聚集索引。这样,上个月的所有记录都应该是连续的并且易于访问。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-01
        • 1970-01-01
        • 2012-01-08
        • 2015-06-17
        • 2011-08-13
        • 1970-01-01
        • 2011-11-08
        相关资源
        最近更新 更多