Bagaimana cara menyelami pengoptimal PostgreSQL dan melacak setiap langkah yang diperlukan untuk mengoptimalkan kueri?

8

Sama seperti struktur MEMO dalam SQL Server yang merupakan semacam "jejak kertas" dari langkah-langkah pengoptimal dalam mengoptimalkan kueri. Apakah PostgreSQL memiliki struktur serupa yang merekam langkah-langkah yang diambil oleh pengoptimal?

zli89
sumber

Jawaban:

3

Tidak, tidak ada struktur atau fungsi audit / pelaporan pengoptimal terinci.

Alat terbaik Anda adalah 'gdb'. Tidak seperti MS SQL Server, PostgreSQL adalah open source; Anda bisa membangun dengan simbol debug diaktifkan, melampirkan debugger, dan melacak apa yang dilakukannya.

Itu tidak berarti itu mudah, tentu saja. Seperangkat breakpoints kalengan dan makro gdb untuk menghasilkan jejak apa yang dilakukan perencana / pengoptimal akan sangat baik. Saya tidak mengetahui adanya alat seperti itu pada saat ini.

gdbTracepoints, atau perftracepoint userspace, akan sangat berguna bagi Anda.

Anda juga dapat mengaktifkan pendataan debug terperinci dan beberapa parameter jejak di postgresql.confkemudian memeriksa file log detail yang dihasilkan.

Ada beberapa dokumentasi (yang saya tambahkan info tentang dumping plan tree, dll, ke) di FAQ pengembang PostgreSQL: https://wiki.postgresql.org/wiki/Developer_FAQ . Ini mungkin bermanfaat. Anda juga harus membaca dokumen pengembang utama.

Craig Ringer
sumber