Postgres EXPLAIN ANALYZE Command

Postgres Explain Analyze Command



Mengenai pangkalan data, prestasi adalah satu ciri yang mengambil keutamaan yang tinggi. Ini memastikan bahawa aplikasi boleh membuat pertanyaan dan menulis data dengan kelajuan dan kecekapan maksimum.

Sebagai pentadbir pangkalan data, kita perlu taksub dengan alat dan kaedah untuk meningkatkan prestasi pangkalan data.

Dalam PostgreSQL, kami mempunyai akses kepada perintah EXPLAIN ANALYZE yang membolehkan kami menganalisis pelan pelaksanaan dan prestasi pertanyaan pangkalan data yang diberikan. Perintah itu mengembalikan maklumat terperinci tentang cara enjin pangkalan data memproses pertanyaan. Ini termasuk urutan operasi yang dilakukan, anggaran kos pertanyaan, masa pelaksanaan dan banyak lagi.







Kami kemudiannya boleh menggunakan maklumat ini untuk mengenal pasti pertanyaan pangkalan data serta mengenal pasti dan membetulkan potensi kesesakan prestasi.



Tutorial ini membincangkan cara menggunakan perintah EXPLAIN ANALYZE dalam PostgreSQL untuk melihat dan mengoptimumkan prestasi pertanyaan.



PostgreSQL EXPLAIN ANALYZE

Perintahnya agak mudah. Pertama, kita perlu menyediakan arahan EXPLAIN ANALYZE pada permulaan pertanyaan yang ingin kita analisis.





Sintaks arahan adalah seperti berikut:

JELASKAN ANALISIS

Sebaik sahaja anda melaksanakan arahan, PostgreSQL mengembalikan output terperinci tentang pertanyaan yang disediakan.



Memahami Output Pertanyaan EXPLAIN ANALYZE

Seperti yang dinyatakan, sebaik sahaja kami menjalankan perintah EXPLAIN ANALYZE, PostgreSQL menjana laporan terperinci tentang rancangan pertanyaan dan statistik pelaksanaan.

Output terdiri daripada satu set lajur yang mengandungi maklumat berguna. Lajur yang terhasil adalah seperti yang ditunjukkan dengan maksud masing-masing:

PELAN SOALAN – Lajur ini memaparkan pelan pelaksanaan pertanyaan yang ditentukan. Pelan pelaksanaan merujuk kepada urutan operasi yang dilakukan oleh enjin pangkalan data untuk menyelesaikan pertanyaan dengan jayanya.

RANCANGAN – Lajur kedua ialah lajur PLAN. Ini mengandungi perwakilan teks bagi setiap operasi atau langkah dalam pelan pelaksanaan. Sekali lagi, setiap operasi diinden untuk menunjukkan hierarki operasi.

JUMLAH KOS – Lajur jumlah kos mewakili anggaran jumlah kos pertanyaan. Kos merujuk kepada ukuran relatif yang digunakan oleh perancang pertanyaan pangkalan data untuk menentukan pelan pelaksanaan yang optimum.

BARIS SEBENAR – Lajur ini menunjukkan bilangan baris yang tepat yang diproses pada setiap langkah dalam pelaksanaan pertanyaan.

MASA SEBENAR – Lajur ini menunjukkan masa sebenar yang diambil oleh setiap operasi yang merangkumi kedua-dua masa pelaksanaan operasi dan masa yang dibelanjakan untuk sumber.

MASA MERANCANG – Lajur ini menunjukkan masa yang diambil oleh perancang pertanyaan untuk menjana pelan pelaksanaan. Ini termasuk jumlah masa pengoptimuman pertanyaan dan penjanaan rancangan.

MASA PERLAKSANAAN – Lajur ini menunjukkan jumlah masa untuk melaksanakan pertanyaan. Ini juga termasuk masa yang dibelanjakan untuk perancangan dan masa pelaksanaan pertanyaan.

PostgreSQL EXPLAIN ANALYZE Contoh

Mari kita lihat beberapa contoh asas menggunakan pernyataan EXPLAIN ANALYZE.

Contoh 1: Pilih Pernyataan
Mari kita gunakan pernyataan EXPLAIN ANALYZE untuk menunjukkan pelaksanaan pernyataan pilih yang mudah dalam PostgreSQL.

JELASKAN ANALISIS pilih * daripada wp_users di mana id > 3;

Sebaik sahaja kita menjalankan pernyataan sebelumnya, kita harus mendapatkan output seperti berikut:

PELAN SOALAN
------------------------------------------------- -----------------
Seq Scan pada wp_users  (kos=0.00..10.38 baris=10 lebar=2256) (masa sebenar=0.009..0.010 baris=7 gelung=1)
Penapis: (id > 3)
Baris Dialih Keluar oleh Penapis: 3
Masa Perancangan: 0.995 ms
Masa Pelaksanaan: 0.021 ms
(5 baris)

Dalam kes ini, kita dapat melihat bahawa bahagian Pelan pertanyaan menunjukkan bahawa pertanyaan melakukan imbasan berurutan pada jadual wp_users. Garis penapis menandakan keadaan yang digunakan untuk menapis baris yang terhasil.

Kami kemudian melihat 'Baris Dialih Keluar oleh Penapis' yang menunjukkan bilangan baris yang dihapuskan oleh keadaan penapis.

Akhir sekali, masa pelaksanaan menunjukkan jumlah masa pelaksanaan pertanyaan. Dalam kes ini, pertanyaan mengambil masa 0.021ms.

Contoh 2: Menganalisis Gabungan
Mari kita ambil pertanyaan yang lebih kompleks yang melibatkan gabungan SQL. Untuk ini, kami menggunakan pangkalan data sampel Pagila. Anda boleh memuat turun dan memasang pangkalan data sampel pada mesin anda untuk tujuan demonstrasi.

Kita boleh menjalankan gabungan mudah seperti yang ditunjukkan dalam yang berikut:

terangkan analisis PILIH f.tajuk, c.nama
DARIPADA filem f
SERTAI kategori_filem fc HIDUP f.id_filem = fc.id_filem
SERTAI kategori c PADA fc.category_id = c.category_id;

Sebaik sahaja kami menjalankan pertanyaan yang diberikan, kami akan melihat output seperti berikut:

Mari kita terokai pelan pertanyaan berikut:

  1. Gelung Bersarang - Ini menunjukkan bahawa gabungan menggunakan strategi gabungan gelung bersarang.
  2. Hash Join – Operasi ini bergabung dengan film_category dan jadual filem menggunakan algoritma gabungan Hash. Operasi ini mempunyai kos sebanyak 77.50 dan dianggarkan 1000 baris. Walau bagaimanapun, masa sebenar yang diambil untuk operasi ini ialah 0.254 hingga 0.439 milisaat, dan ia mendapatkan 1000 baris.
  3. Hash Cond – Ini menunjukkan bahawa syarat cantuman menggunakan Cantuman Hash untuk memadankan lajur film_id dan lajur kategori_filem dalam jadual filem.
  4. Seq Scan on film_category – Operasi ini melakukan imbasan berurutan pada jadual film_category dengan kos 16.00 dan dianggarkan 1000 baris. Masa sebenar yang diambil untuk operasi ini ialah 0.008 hingga 0.056 milisaat, dan ia mendapatkan 1000 baris.
  5. Imbasan Seq pada filem – Pertanyaan melakukan imbasan berurutan pada jadual filem dengan kos dan baris anggaran dan sebenar yang terhasil dalam operasi ini.
  6. Memoize – Operasi ini menyimpan cache hasil gabungan antara filem_kategori dan jadual filem untuk kegunaan seterusnya.
  7. Kunci Cache – Ini menunjukkan bahawa kunci cache yang digunakan untuk memoisasi adalah berdasarkan lajur category_id daripada film_category.
  8. Mod Cache - Ini menunjukkan bahawa pertanyaan menggunakan mod cache logik.
  9. Hit, Rindu, Pengusiran, Limpahan – Tiga baris memberikan statistik tentang cache, bilangan hits, terlepas, pengusiran dan limpahan semasa pelaksanaan. Blok ini juga termasuk penggunaan memori semasa pelaksanaan pertanyaan.
  10. Imbasan Indeks menggunakan category_pkey – Ini menunjukkan operasi yang melakukan imbasan indeks pada jadual kategori menggunakan indeks kunci primer.
  11. Indeks Cond – Ini menunjukkan bahawa imbasan indeks adalah berdasarkan keadaan yang sepadan dengan lajur category_id dalam jadual kategori.
  12. Masa Perancangan – Baris ini menunjukkan masa yang diambil untuk perancangan pertanyaan iaitu 3.005 milisaat.
  13. Masa Pelaksanaan – Akhir sekali, baris ini menunjukkan jumlah masa pelaksanaan pertanyaan iaitu 0.745 milisaat.

Itulah anda mempunyainya! Maklumat terperinci tentang pelaksanaan gabungan mudah dalam PostgreSQL.

Kesimpulan

Anda telah menemui kuasa dan penggunaan pernyataan EXPLAIN ANALYZE dalam PostgreSQL. Pernyataan EXPLAIN ANALYZE ialah alat yang berkuasa untuk analisis dan pengoptimuman pertanyaan. Gunakan alat ini untuk membina pertanyaan yang cekap dan kurang intensif sumber.