【问题标题】:Will SQL Server Partitioning increase performance without changing filegroupsSQL Server 分区是否会在不更改文件组的情况下提高性能
【发布时间】:2010-04-24 14:09:28
【问题描述】:

场景我有一个 1000 万行的表。我将它分成 10 个分区,每个分区有 100 万行,但我不做任何其他事情(比如将分区移动到不同的文件组或主轴)

我会看到性能提升吗?这实际上就像创建 10 个较小的表一样吗?如果我有执行键查找或扫描的查询,性能是否会提高,就好像它们对更小的表进行操作一样?

我正在尝试了解分区与仅拥有一个索引良好的表有何不同,以及它可用于提高性能的地方。

将旧数据(使用分区切换)从主表移到只读存档表会更好吗?

拥有一个具有 100 万行分区和 900 万行分区的表是否类似于(在性能方面)将 900 万行移动到另一个表并在原始表中只留下 100 万行?

【问题讨论】:

    标签: sql-server performance partitioning


    【解决方案1】:

    分区不是一项性能功能,而是用于维护操作,例如在表之间移动数据和快速删除数据。将一个 10M 行的表划分为 10 个 1M 行的分区,这不仅不会提高大多数查询的性能,而且可能会使其中的不少查询变慢

    除非可以确定查询只需要该分区中的行,否则任何查询都不能针对单个分区的较小行集进行操作。但是,通过正确选择表上的聚簇索引,或者至少是一个很好的覆盖非聚簇索引,这总是可以解决的,而且会更好。

    【讨论】:

    • Designing Partitions to Improve Query Performance 怎么样?分区是性能特性,但需要特定的技术来编写查询。还是我错了?
    • 如果您有任何问题,请提出单独的问题,请勿发表评论。我推荐 dba.stackexchange.com 。谢谢。
    • 我的问题与您的回答相关。这个答案已经链接在另一个答案中了。
    【解决方案2】:

    如果您使用的是企业版,那么第一个分区只会对您有所帮助。 我相信它会提高您的表现,尽管您将获得的实际好处将取决于您的具体工作量(是的,它始终取决于)。
    它并不完全像创建 10 个较小的表,但如果您的查询针对分区范围运行,则该分区中的数据将只是“接触”。在这些情况下,我认为性能改进将是显着的。如果查询跨分区范围运行,性能会更差。
    我认为您必须尝试最适合您的数据的解决方案,在某些情况下分区会帮助您,而在另一些情况下会起到相反的作用,分区的另一个好处是您不必担心移动数据周围。

    这是一篇关于分区的好文章 - bol

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2010-11-03
      • 2015-09-15
      • 1970-01-01
      • 2021-10-28
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多