teradata使用样本收集统计数据并不是很有效

时间:2016-03-30 10:56:35

标签: sql database database-design teradata table-statistics

尝试在VT上收集样本2 pct多列统计信息 问题是,它没有采样或我遗漏了什么

COLLECT STATISTICS USING sample 2 percent 
        COLUMN ( C1,C2,C3) , 
        COLUMN ( C1 ) on vt  , 

易失性表VT具有几十亿行,并且在VT上收集统计数据需要与“常规统计数据集合”一样多的“永久”时间。
在其他地方,在过去类似的情况下,我观​​察到如果我使用'new'(多个cols in one)stats集合语法,它会对第一个col进行采样并忽略其余部分(现在这个第二部分是自从我把它更多地放在一个“花时间”预感而不是偷偷摸摸地进入历史时,所以我一直都在验证。)

    show  stats values  
            COLUMN ( C1,C2,C3 ) , 
            COLUMN ( C1 )  on vt;

COLLECT STATISTICS 
            COLUMN ( C1,C2,C3 )
                ON  vt 
            VALUES
(
 /** SummaryInfo **/ 
 /* Data Type and Length: 'I8:8', 'I:4', 'CF:1' */
 /* TimeStamp             */ TIMESTAMP '2016-03-29 16:16:13-00:00', 
 /* Version               */ 6, 
 /* OriginalVersion       */ 6, 
 /* DBSVersion            */ '14.00.00', 
 /* UsageType             */ 'D', 
 /* ComplexStatInfo       */ 'ComplexStatInfo', 
 /* NumOfBiasedValues     */ 0, 
 /* NumOfEHIntervals      */ 200, 
 /* NumOfHistoryRecords   */ 1, 
 /* SamplePercent         */ 0.00, 
 /* NumOfNulls            */ 0, 
 /* NumOfAllNulls         */ 0, 
 /* NumOfPartialNullVals  */ 0, 
 /* PartialNullHMF        */ 0, 
 /* AvgAmpRPV             */ 0.000000, 
 /* MinVal                */ 2012070201942549261, 221945585, 'P', 
 /* MaxVal                */ 2014022922306867633, 277308727, 'P', 
 /* ModeVal               */ 2012070201942549261, 221945585, 'P', 
 /* HighModeFreq          */ 1, 
 /* NumOfDistinctVals     */ 1201056221, 
 /* NumOfRows             */ 1201056221, 
 /* CPUUsage              */ 0.000000, 
 /* IOUsage               */ 0.000000, 
 /* Reserved              */ 0, 
 /* Reserved              */ 0, 
 /* Reserved              */ 0.000000, 
 /* Reserved              */ 0.000000, 
 /* Reserved              */ '', 
 /* StatsSkipCount        */ 0, 
 /* SysInsertCnt          */ 0, 
 /* SysDeleteCnt          */ 0, 
 /* SysUpdateCnt          */ 0, 
 /* SysInsDelLastResetTS  */ TIMESTAMP '9999-12-31 23:59:59-00:00', 
 /* SysUpdLastResetTS     */ TIMESTAMP '9999-12-31 23:59:59-00:00', 
 /* IsSampleFollowingTrend*/ 0, 
 /** Interval: MaxVal[3], ModeVal[3], ModeFreq, LowFreq, OtherVals, OtherRows **/ 

这里是

/* SamplePercent */ 0.00,我正在经历的事情。我相信我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

/* DBSVersion */ '14.00.00',是否正确?您似乎运行了一个非常旧的版本,这是TD Express吗?

好吧,如果你有一个5,000,000,000行表,这个/* NumOfRows */ 1201056221,似乎表示约。 25%,这也很奇怪。

如果你解释一下COLLECT STATS,你可以看到它是否真的是在抽样。

你可以添加表的DDL吗?