آشنایی با دستور Explain در PostgreSQL - آنالیز کوئری - Developer

Blogs

آنالیز کوئری

آشنایی با دستور Explain در PostgreSQL

دستور Explain طرح اجرایی مورد نظر PostgreSQL برای اجرای Query ها را برمیگرداند.

در حقیقت دستور Explain نشان میدهد که جدول های مورد نیاز Query چگونه مورد جست و جو قرار میگریند و اگر داده های چندین جدول مورد نظر Query باشد با چه الگوریتمی این جدول ها به هم میپیوندد (Join Algorithem).

مهمترین و مفیدترین داده ای که دستور Explain در اختیار ما قرار میدهد هزینه شروع Query یا به عبارتی بهتر زمان مورد نیاز برای رسیدن به سطر اول خروجی است.

سینتکس دستور Explain:

که در آن میتوان از Option های زیر استفاده کرد:

ANALYZE [ boolean ]

VERBOSE [ boolean ]

COSTS [ boolean ]

BUFFERS [ boolean ]

TIMING [ boolean ]

SUMMARY [ boolean ]

FORMAT { TEXT | XML | JSON | YAML }

ANALYZE:

استفاده از ANALYZE باعث میشود که ابتدا دستور مورد نظر اجرا شود سپس آمار واقعی اجرای دستور نیز در خروجی نمایش داده شود.

البته باید توجه شود که ANALYZE باعث اجرای دستور میشود و در صورت اجرای دستورات INSERT, UPDATE, DELETE برای جلوگیری از تغییر داده های جدول باید دستی Transaction رو شروع و Rollback کنیم.

 

 

 

 

VERBOSE:

این گزینه باعث نمایش اطلاعات بیشتر راجب طرح اجرای دستور میشود و به صورت پیش فرض غیر فعال می باشد.

COSTS:

این گزینه باعث نمایش هزینه تخمینی هر Query و همچنین تعداد تخمینی سطر های مورد بررسی و طول آنها میشود و به صورت پیش فرض فعال است.

BUFFER:

این گزینه اطلاعات مربوط به بافر را به خروجی اضافه میکند و تنها در کنار ANALYZE قابل استفاده است. این گزینه نیز به صورت پیش فرض غیر فعال است.

TIMING:

این گزینه باعث نمایش زمان مصرف شده در شروع و اجرای هر نود میشود و فقط کنار ANALYZE قابل استفاده است. این گزینه به صورت پیش فرض فعال است.

SUMMARY:

این گزینه باعث نمایش کلیات اطلاعات دستور مانند زمان اجرای همه Query میشود و در کنار ANALYZE استفاده میشود و به صورت پیش فرض فعال است.

FORMAT:

با این گزینه میتوان نوع خروجی دستور را تنظیم کرد. به صورت پیش فرض نوع خروجی TEXT است.

مثال هایی از دستور Explain:

 

 

 

 

 

این دستور به دلیل نبود شرط به صورت خطی جدول را طی و خروجی را نمایش میدهد.

 

 

 

 

 

 

دقت کنید که این دستور شرط موجود در WHERE را به عنوان یک فیلتر در طرح اجرائی قبلی اعمال کرده است.

 

حال اگر شرط را مقداری محدودتر کنیم:

 

 

 

 

 

اینجا میبینیم که یک طرح اجرائی دو لایه ای برای اجرای این دستور انتخاب شده است.

 

همان طور که ملاحظه میکنید استفاده از گزینه ANALYZE باعث نمایش جزئیات اجرایی دستور نیز شده است.

 

برای آشنایی بیشتر با خروجی ها و دستور Explain میتوانید به مستندات سایت Postgresql نیز مراجعه کنید.

00

More Blog Entries

0 Comments