Câu trả lời:
Theo trang Bảo trì Chỉ mục của Postgres Wiki , bạn có thể tìm hiểu trạng thái hiện tại của tất cả các chỉ mục của mình với:
SELECT
t.tablename,
indexname,
c.reltuples AS num_rows,
pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
CASE WHEN indisunique THEN 'Y'
ELSE 'N'
END AS UNIQUE,
idx_scan AS number_of_scans,
idx_tup_read AS tuples_read,
idx_tup_fetch AS tuples_fetched
FROM pg_tables t
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
LEFT OUTER JOIN
( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
JOIN pg_class c ON c.oid = x.indrelid
JOIN pg_class ipg ON ipg.oid = x.indexrelid
JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
AS foo
ON t.tablename = foo.ctablename
WHERE t.schemaname='public'
ORDER BY 1,2;
Cột num_rows
cho biết có bao nhiêu hàng được bao phủ bởi chỉ mục của bạn và index_size
sẽ tăng lên khi chỉ mục đang được xây dựng.
Vì vậy, không có cách nào tốt để làm điều đó, nhưng nếu bạn thực sự cần biết ... trước tiên hãy tính lượng không gian mà chỉ mục sẽ sử dụng, dựa trên kích thước dữ liệu * hàng + chi phí. Sau đó, bạn có thể sử dụng một cái gì đó như pfiles hoặc pgtruss để tìm các tệp đang được ghi bên trong $ PGDATA; nếu các chỉ mục của bạn trên 1GB, thì đó sẽ là một loạt các tệp như nnnnn.n, trong đó bộ n đầu tiên là nhất quán và n tăng cuối cùng cho mỗi tệp GB. Khi bạn biết có bao nhiêu tệp được tạo, bạn có thể xem sự tăng trưởng và tìm hiểu mức độ hoàn thiện của bạn. Ước tính thô, nhưng có lẽ nó giúp.
Nó sẽ có thể trong bản phát hành PostgreQuery 12 sắp tới (sẽ được phát hành vào ngày 3 tháng 10 năm 2019).
SELECT
now()::TIME(0),
a.query,
p.phase,
p.blocks_total,
p.blocks_done,
p.tuples_total,
p.tuples_done
FROM pg_stat_progress_create_index p
JOIN pg_stat_activity a ON p.pid = a.pid;
Xem các tài liệu cho chế độ xem pg_stat_proTHER_create_index và bài đăng trên blog của depesz để biết chi tiết.