【问题标题】:New Teradata Stats features . Confused about a few things新的 Teradata 统计功能。对一些事情感到困惑
【发布时间】:2016-04-28 08:46:49
【问题描述】:

我也陷入了同样的泥潭,也许你们很多人曾经/曾经。 Teradata 14.1 在 .
此列是 1 个环境。结果是零概率,因为我们前一段时间升级了,但在另一个(QA / test)环境中。它得到了值。

DBC.DBQLRuleTbl | TimeCreated


sel TimeCreated from DBC.DBQLRuleTbl where DBQLRuleTbl.UserID in ( sel OU.DatabaseId from DBC.ObjectUsage OU )

1 个环境中没有行。 我想做的是找出未使用的统计数据。我们只在过去几个月里启用了 OU。 因此,当我使用此查询查找 UNUSED 统计信息时,我得到最后一个 col -1,因为 RuleTbl 没有与 OU 表匹配的任何内容。

        SELECT DBC.DBase.DatabaseName AS DatabaseName
          ,DBC.TVM.TVMName        AS TableName
          ,COALESCE(DBC.StatsTbl.StatsName
                   ,DBC.StatsTbl.ExpressionList
                   ,'SUMMARY')    AS StatName
          ,CURRENT_DATE - CAST(DBC.StatsTbl.CreateTimeStamp AS DATE) AS StatAge
          ,CASE
           WHEN DatabaseName = 'DBC'
           THEN -2  -- Logging Not Applicable
           WHEN DBC.StatsTbl.StatsType IN ('B', 'M')
           THEN -2  -- Logging Not Applicable on Temp tables (base and materialized)
           WHEN DBC.DBQLRuleTbl.TimeCreated IS NULL
           THEN -1  -- Logging Not Enabled
           WHEN DBC.DBQLRuleTbl.TimeCreated > DBC.StatsTbl.CreateTimeStamp
           THEN CURRENT_DATE - CAST(DBC.DBQLRuleTbl.TimeCreated AS DATE)
           ELSE CURRENT_DATE - CAST(DBC.StatsTbl.CreateTimeStamp AS DATE)
     END AS DaysStatLogged 
    FROM   DBC.StatsTbl LEFT JOIN  DBC.DBQLRuleTbl
               ON DBC.StatsTbl.DatabaseId = DBC.DBQLRuleTbl.UserID
              AND DBQLRuleTbl.ExtraField5 = 'T'   

          ,DBC.Dbase
          ,DBC.TVM      
    WHERE DBC.StatsTbl.DatabaseId = DBC.DBASE.DatabaseId
      AND DBC.StatsTbl.ObjectId   = DBC.TVM.TVMId
      AND NOT EXISTS (SELECT '1' FROM DBC.ObjectUsage OU
                      WHERE OU.UsageType  = 'STA'
                        AND OU.DatabaseId = DBC.StatsTbl.DatabaseId
                        AND OU.ObjectId   = DBC.StatsTbl.ObjectId
                        AND OU.FieldId    = DBC.StatsTbl.StatsId
                        AND CURRENT_DATE - CAST(OU.LastAccessTimeStamp AS DATE) < N
                     )
      --AND DaysStatLogged > N 

    /* I had to mute this criteria because  otherwise there will be no o/p for reasons mentioned above */

      AND DBC.StatsTbl.StatsId <> 0  
-- Do not qualify table-level SUMMARY statistics as unused
-- May get implicitly used but not recorded as used
and StatAge < N 

/* StatAge < N .I am not sure if this filter should be there- I added it to catch those stats that are as old OU. We dunno if stats older than OU ever got used before OU started */
                                     and databasename in  ( sel child    from  dbc.children where parent ='FINDB'  group by      1 )
    ORDER BY 1, 2, 3;

我正在尝试获取 FINDB 级联的统计信息,而不是系统范围的统计信息。 鉴于我的规则表被搞砸了 - 上面的查询不是最符合要求吗
“查找自 OU 开启以来未使用的 FINDB 下所有数据库的统计信息”

【问题讨论】:

    标签: sql database teradata data-warehouse sqlperformance


    【解决方案1】:

    查询可能没问题,因为它基于Identifying Used, Unused and Missing Statistics,只需检查它是否返回您想要的。

    但是您使用的是 TD14.10,并且 Viewpoint 中的 Stats Manager 端口可以完成所有这些(以及更多),如果您还没有使用它,您应该开始 Easing Into Using the New AutoStats Feature

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2015-07-12
      • 2014-06-28
      • 1970-01-01
      相关资源
      最近更新 更多