【问题标题】:Is there a way to load the results of a teradata show stats values into a table?有没有办法将 teradata show stats 值的结果加载到表中?
【发布时间】:2019-07-26 16:25:14
【问题描述】:

我知道您可以通过对 stats 值执行 show 命令来确定表是否为块级压缩:

show stats values on DBname.TABLEname
-- BLCPctCompressed >0 means yes

我的问题是,是否有办法以程序方式或批量方式访问这些结果?我正在研究如何在我的 Teradata 系统上节省空间,如果逐个表格地寻找非 BLC 的表格可能会很耗时。我想询问是否有程序方法可以用 BLC 的 Y/N 报告我的数据库中的所有表,然后再做一些更复杂的事情,比如构建一个将 show stats values on <table> 结果导出到文件并运行 perl 脚本的 shell 脚本评估 Y/N 的 BLC 线。也许有一种方法可以将节目的结果插入到表格中?类似于create volatile table vt_stat_rslt as (show stats values on db.table) with data on commit preserve rows

【问题讨论】:

    标签: optimization teradata database-administration


    【解决方案1】:

    如果您只是寻找 BLC 信息,可以在 dbc.StatsVBLCCompRatio 列中找到:

     select * from dbc.STatsV where StatsId = 0
    

    【讨论】:

    • 正是我想要的!你能帮我理解 statsId = 0 行的用途吗?
    • StatsId = 0 返回summary stats,即表级信息。
    【解决方案2】:

    不可以,HELP 或 SHOW 的输出只能返回给客户端。它不能用作子查询/CTE 或在存储过程中访问。

    考虑直接在数据库节点上运行ferret 实用程序(一个命令可以列出有关许多表的信息)。

    您还可以查看CreateFsysInfoTable / PopulateFsysInfoTable 宏(请参阅SQL 函数、运算符、表达式和谓词手册)以一次获取和存储有关一个表的信息。

    【讨论】:

    • dnoeth 的反应更好。我回答了表面问题,他解决了这个问题的潜在动机。
    【解决方案3】:

    收集统计信息通常存储在dbc.columnstatsvdbc.indexstatsv中。您可以检查这两个 dbc 视图,看看是否有帮助。

    【讨论】:

    • 这些视图是几个版本以来的遗留问题,实际上它们只是dbc.StatsV的子集
    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2019-11-21
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多