AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-4511

vonPryz's questions

Martin Hope
vonPryz
Asked: 2016-03-15 06:15:55 +0800 CST

增量统计:找出哪些分区被重采样

  • 4

TL;DR:当使用增量统计时,是否有可能找出哪些分区已经被重新采样,哪些没有?平台是 SQL Server 2014 企业版。

带有一些背景信息的长版本是这样的。

假设一个相当典型的 DW 环境,有一个分区表。分区基于日期列。这是通过将暂存数据加载到单独的表中并在预处理之后使用分区切换将数据移动到生产事实表中来完成的。哦,正在使用聚集列存储索引。使用了大约一千个分区。数据库在虚拟机上运行。

事实表中有大约 7.5 千兆行 (100 GB)。每日增长约五兆行。这是一个太小的增长率,无法触发自动统计更新,保存跟踪标志 2371(尚未尝试)。

开发人员对过时统计数据的本能反应是更新它们。对于 7.5 千兆行,所有统计数据的完整更新需要大约五个小时。对于单个统计更新,处理性能约为 20 分钟或每秒 90 兆行。

由于系统在 VM 平台上,业务规则限制了它的成本。内存和 IOPS 都不容易增加。五小时的更新工作太慢了,无法包含在每晚的 ETL 过程中,因此统计信息要么过时,要么在意外时间更新,要么将在维护窗口中更新。

由于SQL Server是2014企业版,所以支持增量统计,听起来就是解决方案。将统计数据转换为增量统计数据后,处理单个分区的单个统计数据仅需 20 秒。新切换分区的总计约为五分钟。这听起来不错,当然适合 ETL 过程。

我想知道的是如何在分区切换环境中管理增量统计信息。假设统计数据在日期 D 被转换和更新为增量,那么如何找出日期 D+2 的未处理分区?在 ETL 过程中更新统计信息是微不足道的,因为切换过程显然知道分区 ID。但是如果有没有重新采样的分区,如何找到它们呢?

  • 统计数据的最新更新可以从sys.dm_db_stats_properties
  • 分区号可从sys.partitions
  • 分区函数值在sys.partition_range_values

可以选择统计的最后更新日期 L 并将其与今天的日期 T 进行比较。然后计算 L 指向哪个分区 ID 以及它是否与 T 相同。然后继续更新所有分区 ID [L, T)。这听起来很棘手而且容易出错,那么有没有更好的方法呢?显示哪些分区用于重采样的 DMV 会很好,但没有一个,是吗?

sql-server sql-server-2014
  • 1 个回答
  • 1138 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve