JELASKAN dengan saran indeks

10

Apakah ada perangkat lunak (lebih disukai open source) daripada yang dapat menganalisis EXPLAIN PostgreSQL, dan merekomendasikan indeks yang diperlukan yang akan mempercepat permintaan?

Adam Matan
sumber

Jawaban:

6

Saya benar-benar baru saja menemukan ini beberapa menit yang lalu: http://explain.depesz.com/ . Anda menempel di hasil ANALISIS EKSPLAIN Anda dan itu menunjukkan Anda di mana mungkin ada masalah (bahkan kode warna).

Dari bagian bantuan ...

jelas.depesz.com adalah alat untuk menemukan penyebab sebenarnya untuk permintaan lambat. Secara umum, orang akan menggunakan query EXPLAIN ANALYZE; dan baca hasilnya. Masalahnya adalah bahwa tidak semua bagian dari output mudah dimengerti oleh siapa pun, dan tidak selalu jelas apakah node yang dieksekusi dalam 17,3ms lebih cepat atau lebih lambat daripada yang berjalan dalam 100ms - mengingat fakta bahwa yang pertama dijalankan 7 waktu. Untuk menggunakan situs ini, cukup buka halaman pertama dan tempel di sana, jelaskan analisis hasil dari psql Anda. Output ini bisa terlihat seperti ini. Setelah mengunggah, Anda akan diarahkan ke halaman yang menunjukkan diuraikan, dan baik (well, setidaknya baik untuk saya :) diwarnai untuk memberi penekanan pada bagian-bagian penting. Ini bisa terlihat seperti ini. Catatan: url untuk keluaran berwarna tetap, jadi Anda bisa menggunakannya untuk menunjukkannya kepada orang lain - misalnya - untuk orang-orang baik di irc channel #postgresql di freenode. Grafik ini menggunakan 4 warna untuk menandai hal-hal penting: latar belakang putih - semuanya latar belakang kuning baik - simpul yang diberikan mengkhawatirkan latar belakang coklat - simpul yang diberikan lebih mengkhawatirkan latar belakang merah - simpul yang diberikan sangat mengkhawatirkan Warna mana yang digunakan, dipilih berdasarkan mode yang mana Anda akan menggunakan: "Exclusive", "Inclusive" atau "Rows X".

Philip Southam
sumber
1

Saya tidak mengetahui adanya alat untuk Postgres yang melakukan ini secara algoritmik, dan menurut saya otak manusia (dan seringkali sedikit eksperimen dalam lingkungan pengembang) adalah satu-satunya alat yang tepat di sini. Ada banyak faktor yang terlibat, termasuk apakah perencana kueri akan menganggap indeks Anda layak untuk digunakan - sesuatu yang ditentukan oleh cara instalasi Anda menyetel pengaturan perencana kueri dan ukuran / statistik pada tabel yang terlibat ( s).

Rekomendasi terbaik yang bisa saya buat adalah melakukan EXPLAIN ANALYZE(yang ANALYZEpenting - ini akan memberi Anda waktu menjalankan kueri & subplan), lihat hasilnya sendiri & serang angka terbesar yang Anda lihat terlebih dahulu. Anda mungkin bisa menulis parser untuk memecah output EXPLAIN (terutama di 9.0 dengan output JSON), tapi saya belum tahu ada orang yang menangani ini (ini pada dasarnya yang dilakukan oleh pengoptimal untuk MS-SQL ...)

voretaq7
sumber
0

Tidak ada grade produksi, tetapi bagi yang penasaran, ada / sedang proyek riset untuk mengimplementasikan sesuatu seperti itu. Cari "penasihat indeks PostgreSQL".

Peter Eisentraut
sumber