三、收集统计信息的方法
1
、手动收集数据库、
schema
、表、
projecon
等的信息(默认收集
10%
)
SELECT ANALYZE_STATISTICS ('[schema.]table' [, 'column[,...]'] [, percent ] )
2
、收集表的数据量(轻量级,默认
60s
自动收集)
SELECT DO_TM_TASK ('analyze_row_count', 'public.Emp_Dimension_b0');
3
、收集外部表
SELECT ANALYZE_EXTERNAL_ROW_COUNT('loader_rejects');
四、取消统计
1
、
ctrl +c --
取消当前的统计
2
、
interrupt_statement() --
取消当前的统计
SELECT INTERRUPT_STATEMENT('session_id', statement_id);
3
、
drop_stascs() --
删除统计结果
DROP_STATISTICS ('[ scope ]'[, 'category'] [, 'column[,…]' )
SELECT DROP_STATISTICS('store.store_sales_fact');
五、测试
测试一:
一个表中有几条数据,执行
SELECT DO_TM_TASK ('analyze_row_count', 'public.table_name');
结果:发现
stascs_updated_mestamp
的时间不变。
原因:因为数据没有变化。
测试二:
一个表中有几条数据,修改后,执行
SELECT DO_TM_TASK ('analyze_row_count',
'public.table_name');
结果:发现
stascs_updated_mestamp
更新为最新时间。
原因:因为数据有个变化。
测试三:
一个表中有几条数据,添加几条数据后,等待一会
结果:发现
stascs_updated_mestamp
更新为最新时间。
原因:因为默认
60s
会执行一次轻量级统计,且表中数据有变化。
测试四:
一个表中有几条数据,执行
select analyze_stascs(‘table_name’);
结果:发现
stascs_type
变为
ALL
,并且
stascs_updated_mestamp
更新为最新时间。
评论