Apakah ada cara untuk memantau kemajuan pembuatan indeks di PostgreSQL. Saya membuat indeks di atas meja besar dan saya ingin melihat seberapa cepat ini terjadi.
Apakah ada cara untuk memonitor ini?
postgresql
index
myahya
sumber
sumber
Jawaban:
Menurut halaman Pemeliharaan Indeks Postgres Wiki , Anda dapat mengetahui status saat ini dari semua indeks Anda dengan:
Kolom
num_rows
menunjukkan berapa banyak baris yang dicakup oleh indeks Anda danindex_size
akan tumbuh ketika indeks sedang dibangun.sumber
Jadi, tidak ada cara yang baik untuk melakukannya, tetapi jika Anda benar-benar perlu tahu ... pertama-tama hitung jumlah ruang yang harus diambil indeks, berdasarkan pada ukuran data * baris + overhead. Anda kemudian dapat menggunakan sesuatu seperti pfiles atau pgtruss untuk menemukan file yang sedang ditulis dalam $ PGDATA; jika indeks Anda lebih dari 1GB, itu akan menjadi serangkaian file seperti nnnnn.n, di mana set pertama n konsisten, dan n kenaikan terakhir untuk setiap file GB. Setelah Anda tahu berapa banyak file yang dibuat, Anda dapat menonton pertumbuhan dan mencari tahu seberapa dekat Anda dengan penyelesaian. Perkiraan kasar, tapi mungkin itu membantu.
sumber
Tidak, tidak ada, bahkan jika Anda sedang membangunnya dalam mode CONCURRENT. Meskipun di masa lalu saya telah mengawasi ukuran file dalam direktori database, ini tidak benar-benar berguna karena Anda hanya bisa menebak seberapa besar ukurannya.
sumber
Ini akan dimungkinkan dalam rilis PostgreSQL 12 mendatang (harus dirilis pada 3 Oktober 2019).
Lihat dokumen untuk tampilan pg_stat_progress_create_index dan posting blog depesz untuk detailnya.
sumber