查询建表时间和更新时间

hologress 我想查询某张表的建表时间或者最后一次更新时间,该怎么查?

展开
收起
游客gh7xxmzvdhrjy 2023-05-26 09:19:45 172 分享 版权
阿里云 AI 助理回答

在Hologres中,查询某张表的建表时间或最后一次更新时间,可以通过系统表 hologres.hg_table_info 获取相关信息。以下是具体的操作步骤和方法:


1. 查询表的创建时间和最后更新时间

通过查询 hologres.hg_table_info 系统表,可以获取表的创建时间 (create_time) 和最后修改时间 (last_modify_time)。以下是查询语句示例:

SELECT 
    db_name, 
    schema_name, 
    table_name, 
    create_time, 
    last_modify_time 
FROM 
    hologres.hg_table_info 
WHERE 
    table_name = '<your_table_name>' 
    AND schema_name = '<your_schema_name>';
  • db_name:数据库名称。
  • schema_name:模式名称。
  • table_name:目标表名称。
  • create_time:表的创建时间。
  • last_modify_time:表数据的最后修改时间。

注意:请将 <your_table_name><your_schema_name> 替换为实际的表名和模式名。


2. 查询表最近一次的数据修改量

如果需要进一步分析表最近一次修改的时间及修改的数据量变化,可以使用以下 SQL 查询:

WITH tmp_table_info AS (
    SELECT
        db_name,
        schema_name,
        table_name,
        row_count,
        collect_time,
        last_modify_time
    FROM
        hologres.hg_table_info
    WHERE
        last_modify_time IS NOT NULL
        AND type = 'TABLE'
        AND table_name = '<your_table_name>'
)
SELECT
    end_data.db_name AS db_name,
    end_data.schema_name AS schema_name,
    end_data.table_name AS table_name,
    (end_data.row_count - start_data.row_count) AS modify_row_count,
    end_data.row_count AS current_rows,
    end_data.last_modify_time AS last_modify_time
FROM (
    SELECT 
        db_name, 
        schema_name, 
        table_name, 
        row_count, 
        last_modify_time 
    FROM 
        tmp_table_info 
    WHERE 
        collect_time > (current_date - interval '1 day')
) end_data
LEFT JOIN (
    SELECT 
        db_name, 
        schema_name, 
        table_name, 
        row_count 
    FROM 
        tmp_table_info 
    WHERE 
        collect_time <= (current_date - interval '1 day')
) start_data
ON 
    end_data.db_name = start_data.db_name 
    AND end_data.schema_name = start_data.schema_name 
    AND end_data.table_name = start_data.table_name;
  • modify_row_count:表示最近一次修改时的数据量变化。
  • current_rows:当前表中的总行数。
  • last_modify_time:最近一次修改时间。

说明:此查询适用于分析表在最近一天内的数据变化情况。


3. 查看表的生命周期信息(可选)

如果需要检查表是否已过期(基于生命周期设置),可以使用以下查询:

SELECT 
    * 
FROM (
    SELECT 
        CASE 
            WHEN EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) - create_time::DECIMAL >= time_to_live_in_seconds::DECIMAL 
            THEN 1 
            ELSE 0 
        END AS mark,
        t1.schema,
        t1.tables 
    FROM (
        SELECT 
            a.table_namespace AS schema,
            a.table_name AS tables, 
            a.property_values AS time_to_live_in_seconds,
            b.property_value AS create_time,
            EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) AS currentNow 
        FROM 
            hologres.hg_table_properties a 
        JOIN 
            hologres.hg_table_properties b 
        ON 
            a.table_name = b.table_name 
        WHERE 
            a.property_key = 'time_to_live_in_seconds' 
            AND b.property_key = 'create_time'
    ) AS t1
) AS t2 
WHERE 
    t2.mark = '1';
  • mark=1:表示该表已过期。
  • time_to_live_in_seconds:表的生命周期(以秒为单位)。
  • create_time:表的创建时间。

注意:此查询仅适用于设置了生命周期属性的表。


4. 其他注意事项

  • 权限要求:查询 hologres.hg_table_infohologres.hg_table_properties 系统表时,需确保当前用户具有相应的权限。如无权限,请联系管理员授予查看权限。
  • 外部表限制:对于外部表,其元数据更新可能存在延迟(约5分钟)。如果需要实时查询外部表的最新数据,建议使用 IMPORT FOREIGN SCHEMA 更新外部表元数据。

通过上述方法,您可以准确查询 Hologres 表的创建时间、最后更新时间以及相关统计信息。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

还有其他疑问?
咨询AI助理