PostgreSQL : 테이블 생성 날짜


13

최근에 많은 DB 테이블이 생성되는 프로젝트를 완료했습니다.

이 테이블의 대부분에는 임시 가비지가 포함되어 있으며 모든 테이블을 나열하는 간단한 방법을 찾고 있습니다.

생성 날짜에 따라 정렬 된 모든 DB 테이블을 나열하는 방법이 있습니까?

답변:



5

그렇습니다. 한계가 있습니다.

보다

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

추가 정보

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

아니요, 아는 한 불가능합니다.

이 값은 시스템 테이블에 저장되지 않습니다 (하지만 좋을 것입니다).


1

이 쿼리

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 

확실히 도움이 될 것입니다.

주의 : 그것은 녹색 플럼에서만 작동합니다.


0

테이블 작성 시간을 얻을 수는 없지만 데이터베이스를 정기적으로 청소하면 최근에 작성된 테이블 목록을 실제로 얻을 수 있습니다. 이 쿼리를 사용할 수 있습니다 : select * from pg_stat_user_tables 여기서 last_vacuum> now ()-interval '3 days'; 필요에 따라 간격을 변경할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.