teradata 使用样本收集统计数据不太有效
teradata collect stats using sample doesnt quite work
尝试在 VT
上收集样本 2 pct 多列统计数据
问题是,它没有采样或者我遗漏了一些东西
COLLECT STATISTICS USING sample 2 percent
COLUMN ( C1,C2,C3) ,
COLUMN ( C1 ) on vt ,
易变 table VT 有几十亿行,收集 VT 统计数据所花费的时间与常规统计数据收集一样多 "forever" 时间。
同样在其他地方,在过去的类似情况下,我观察到如果我使用 'new'(许多列合一)统计信息收集语法,它会采样第一个列并忽略其余部分(现在这个第二部分并没有完全验证,因为我更多的是基于 'time taken' 的直觉而不是窥视历史。)
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,
是我的意思。我确定我错过了什么。
这 /* DBSVersion */ '14.00.00',
正确吗?您似乎 运行 一个很旧的版本,这是 TD Express 吗?
嗯,如果你有 5,000,000,000 行 table,这个 /* NumOfRows */ 1201056221,
似乎表示大约。 25%,这也很奇怪。
如果你解释你的 COLLECT STATS
你可以看到它是否真的在采样。
你能添加 table 的 DDL 吗?
尝试在 VT
上收集样本 2 pct 多列统计数据
问题是,它没有采样或者我遗漏了一些东西
COLLECT STATISTICS USING sample 2 percent
COLUMN ( C1,C2,C3) ,
COLUMN ( C1 ) on vt ,
易变 table VT 有几十亿行,收集 VT 统计数据所花费的时间与常规统计数据收集一样多 "forever" 时间。
同样在其他地方,在过去的类似情况下,我观察到如果我使用 'new'(许多列合一)统计信息收集语法,它会采样第一个列并忽略其余部分(现在这个第二部分并没有完全验证,因为我更多的是基于 'time taken' 的直觉而不是窥视历史。)
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,
是我的意思。我确定我错过了什么。
这 /* DBSVersion */ '14.00.00',
正确吗?您似乎 运行 一个很旧的版本,这是 TD Express 吗?
嗯,如果你有 5,000,000,000 行 table,这个 /* NumOfRows */ 1201056221,
似乎表示大约。 25%,这也很奇怪。
如果你解释你的 COLLECT STATS
你可以看到它是否真的在采样。
你能添加 table 的 DDL 吗?