PostgreSQL: Tablonun oluşturulma tarihi


13

Kısa bir süre önce birçok DB tablosunun oluşturulduğu bir projeyi bitirdim.

Bu tabloların çoğu geçici çöp içerir ve tüm bu tabloları listelemek için basit bir yol arıyorum.

Tüm DB tablolarını oluşturulma tarihlerine göre sıralamanın bir yolu var mı?

Yanıtlar:



5

Evet mümkündür - sınırlamalarla.

Görmek

/programming/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752

daha fazla bilgi için

WITH CTE AS
(
    SELECT 
        table_name 

        ,
        (
            SELECT 
                MAX(pg_ls_dir::int)::text 
            FROM pg_ls_dir('./base') 
            WHERE pg_ls_dir <> 'pgsql_tmp' 
            AND  pg_ls_dir::int  <= (SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name)
        ) as folder 


        ,(SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name) filenode

    FROM information_schema.tables
    WHERE table_type = 'BASE TABLE'
    AND table_schema = 'public'
)

SELECT 
    table_name 
    ,(
        SELECT creation 
        FROM pg_stat_file(
            './base/' || folder || '/' || filenode 
        )
    ) as creation_time
FROM CTE;

3

Hayır, bildiğim kadarıyla bu mümkün değil.

Bu değer sistem tablolarının hiçbirinde depolanmaz (olsa iyi olurdu).


1

Bu sorgu

select pslo.stasubtype, pc.relname, pslo.statime
from pg_stat_last_operation pslo
join pg_class pc on(pc.relfilenode = pslo.objid)
and pslo.staactionname = 'CREATE'
order by pslo.statime desc 

kesinlikle yardımcı olacaktır.

Not: Yalnızca greenplum üzerinde çalışır.


0

Tablo oluşturma süresi elde etmek mümkün değildir, ancak veritabanınızı düzenli olarak vakumlarsanız son oluşturulan tabloların listesini alabilirsiniz. Bu sorguyu kullanabilirsiniz: pg_stat_user_tables adresinden * seçin; burada last_vacuum> now () - aralık '3 gün'; aralığı ihtiyacınıza göre değiştirebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.