如何查询数据库中的历史表的大小在红移来确定数据库大小增长

问题描述:

我想向前伸出我的亚马逊红移表的大小,因为我正打算扩大我的红移簇大小。如何查询数据库中的历史表的大小在红移来确定数据库大小增长

我知道如何查询今天的表格大小(请参阅下面的查询),但是我怎样才能测量我的表格大小随着时间的增长,而无需使ETL作业快速创建日常表格大小?

-- Capture table sizes 
select 
    trim(pgdb.datname) as Database, 
    trim(pgn.nspname) as Schema, 
    trim(a.name) as Table, 
    b.mbytes, 
    a.rows 
from (
    select db_id, id, name, sum(rows) as rows 
    from stv_tbl_perm a 
    group by db_id, id, name 
) as a 
join pg_class as pgc on pgc.oid = a.id 
join pg_namespace as pgn on pgn.oid = pgc.relnamespace 
join pg_database as pgdb on pgdb.oid = a.db_id 
join (
    select tbl, count(*) as mbytes 
    from stv_blocklist 
    group by tbl 
) b on a.id = b.tbl 
order by mbytes desc, a.db_id, a.name; 
+0

你是什么意思的用法大小?请编辑您的问题,并提供有关如何获得“今日使用量”的详细信息,以便我们可以查看您正在寻找的信息。 –

+0

如果人们有兴趣创建为这些类型的问题的场所,按照[开StackExchange致力于云计算网站(https://area51.stackexchange.com/proposals/110490/cloud-computing-aws-azure的建议-google-openstack-etc?referrer = Gtut7wQSWPk88jFJz_zqMg2),并对一些示例问题进行投票。 –

+0

@JohnRotenstein,\t 我已经编辑我的问题,先生,希望你和任何人都明白我的意思,并能帮助我:)谢谢 –

没有Amazon Redshift保留的历史表大小信息。您需要定期运行查询,例如问题中的查询。

您可以将查询包装在INSERT语句中并每周运行一次,并将结果插入表中。这样,您将获得每周每张表的历史表大小信息,您可以使用这些信息来预测未来的增长。

在这种测量之前,值得做一个VACUUM以从存储中删除已删除的行。

+0

非常感谢约翰先生的回答和你的编辑,现在我可以集中精力使捕获日表大小ETL任务:d,希望这个答案将帮助其他太 –

+0

嗨@MaulanaMalikIbrahim,如果这个或任何答案已解决您的问题请点击复选标记考虑[接受它](http://meta.stackexchange.com/q/5234/179419)。这向更广泛的社区表明,您已经找到了解决方案,并为答复者和您自己提供了一些声誉。没有义务这样做。 –