Làm cách nào để tìm thời gian tạo bảng trong Postgresql.PostgreSQL: Thời gian tạo bảng
Ví dụ,
Nếu tôi tạo tệp, tôi có thể tìm thời gian tạo tệp như tôi muốn biết thời gian tạo bảng.
Làm cách nào để tìm thời gian tạo bảng trong Postgresql.PostgreSQL: Thời gian tạo bảng
Ví dụ,
Nếu tôi tạo tệp, tôi có thể tìm thời gian tạo tệp như tôi muốn biết thời gian tạo bảng.
Tôi đã xem qua các bảng pg_ * và tôi không thể tìm thấy bất kỳ thời gian tạo nào trong đó. Có thể định vị các tệp bảng, nhưng sau đó trên Linux bạn không thể nhận được thời gian tạo tệp. Vì vậy, tôi nghĩ câu trả lời là bạn chỉ có thể tìm thấy thông tin này trên Windows, sử dụng các bước sau:
select datname, datdba from pg_database;
select relname, relfilenode from pg_class;
<PostgreSQL folder>/main/base/<database id>/<table filenode id>
(không chắc chắn nó là gì trên Windows).Tôi không nghĩ rằng nó có thể từ bên trong PostgreSQL, nhưng có thể bạn sẽ tìm thấy nó trong thời gian tạo tệp của bảng bên dưới.
Bạn không thể - thông tin không được ghi ở bất kỳ đâu. Nhìn vào các tệp bảng sẽ không nhất thiết cung cấp cho bạn thông tin phù hợp - có các thao tác bảng sẽ tạo một tệp mới cho bạn, trong trường hợp đó ngày sẽ đặt lại.
Bạn có thể lấy từ pg_stat_last_operation. Dưới đây là làm thế nào để làm điều đó:
select * from pg_stat_last_operation where objid = 'table_name'::regclass order by statime;
cửa hàng bảng này hoạt động sau đây:
select distinct staactionname from pg_stat_last_operation;
staactionname
---------------
ALTER
ANALYZE
CREATE
PARTITION
PRIVILEGE
VACUUM
(6 rows)
LRI: "pg_stat_last_operation không tồn tại", tôi đang sử dụng pg9.2.4. –
pg_stat_last_operation là Greenplum. –
Bảng 'pg_stat_all_tables' cũng có thể hữu ích. –
--query
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
sẽ giúp đạt được kết quả mong muốn
(thử nó trên greenplum)
SELECT oid FROM pg_database WHERE datname = 'mydb';
Sau đó (giả sử các oid
là 12345):
ls -l $PGDATA/base/12345/PG_VERSION
workaround này giả định rằng PG_VERSION
là ít có khả năng được sửa đổi sau khi tạo.
NB: Nếu PGDATA
không được định nghĩa, kiểm tra Where does PostgreSQL store the database?
Có một số hoạt động trên một bảng, chẳng hạn như CLUSTER, mà sẽ tạo ra một tập tin mới và không tái sử dụng cũ. Vì vậy, đây không phải là một phương pháp đáng tin cậy. –
@Alex Korban: Hoàn toàn tự động hóa tại đây: http://stackoverflow.com/questions/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752 –
@Quandary: Thú vị, cảm ơn . Có vẻ như vẫn không có phương pháp chống đạn để làm điều đó, ngoài việc lưu trữ thời gian tạo bản thân. –