فقط مربوط به Cloud Firestore Enterprise edition. |
برای عیب یابی پرس و جوهای کند، از Query Explain برای به دست آوردن طرح اجرای پرس و جو و نمایه اجرای زمان اجرا استفاده کنید. بخش زیر مراحلی را که می توانید برای بهینه سازی عملکرد پرس و جو بسته به نمایه اجرا انجام دهید شرح می دهد:
تعداد نتایج را محدود کنید
از فیلد بازگشتی رکوردها در درخت اجرا استفاده کنید تا مشخص کنید آیا پرس و جو اسناد زیادی را برمی گرداند یا خیر. تعداد اسناد بازگردانده شده را با استفاده از بند $limit
محدود کنید. این باعث کاهش اندازه بایت سریال نتایج در هنگام بازگشت به مشتریان از طریق شبکه می شود. در مواردی که قبل از گره Limit
یک گره MajorSort
وجود دارد، موتور پرس و جو می تواند گره های Limit
و MajorSort
را ادغام کند و یک مرتب سازی و مرتب سازی کامل در حافظه را جایگزین یک مرتب سازی TopN کند و نیاز به حافظه برای پرس و جو را کاهش دهد.
اندازه سند نتیجه را محدود کنید
برای جلوگیری از واکشی فیلدهای غیر ضروری، اندازه سند برگشتی را با استفاده از عبارت $project
محدود کنید. این به کاهش هزینه محاسباتی و حافظه پردازش نتایج میانی و اندازه بایت سریالی نتایج در هنگام بازگشت به مشتریان از طریق شبکه کمک می کند. در مواردی که تمام فیلدهای ارجاع داده شده در پرس و جو توسط یک نمایه معمولی (نه چند کلیدی) پوشش داده می شود، این همچنین اجازه می دهد تا پرس و جو به طور کامل توسط اسکن نمایه پوشش داده شود و نیازی به واکشی اسناد از حافظه اصلی نباشد.
از شاخص ها استفاده کنید
از دستورالعمل های زیر برای تنظیم و بهینه سازی ایندکس ها استفاده کنید.
مشخص کنید که آیا پرس و جو از شاخص استفاده می کند
با بررسی گره های برگ در درخت اجرا می توانید تشخیص دهید که آیا پرس و جو از یک شاخص استفاده می کند یا خیر. اگر گره برگ درخت اجرا یک گره TableScan باشد، به این معنی است که پرس و جو از شاخص استفاده نمی کند و اسناد را از حافظه اصلی اسکن می کند. اگر از یک شاخص استفاده می شود، گره برگ درخت اجرا، شناسه شاخص و فیلدهای شاخص ایندکس را نمایش می دهد.
مشخص کنید که آیا شاخص مورد استفاده قابل بهینه سازی است یا خیر
ایندکس برای یک پرس و جو مفید است که بتواند تعداد اسنادی را که موتور پرس و جو نیاز دارد از فضای ذخیره سازی اولیه واکشی کند یا اینکه ترتیب فیلد آن بتواند نیاز مرتب سازی درخواست را ارائه دهد، مفید است.
اگر از یک نمایه برای یک پرس و جو استفاده می شود، اما موتور پرس و جو هنوز در حال واکشی و دور انداختن بسیاری از اسناد است، همانطور که توسط یک گره Scan که رکوردهای زیادی را پس از آن یک گره فیلتر که رکوردهای کمی را برمی گرداند، شناسایی می شود، این نشانه آن است که گزاره پرس و جو که با استفاده از ایندکس برآورده شده است، انتخابی نیست. برای ایجاد نمایه مناسب تر، به ایجاد نمایه ها مراجعه کنید.
اگر از یک شاخص غیر چندگانه برای یک پرس و جو استفاده شود، اما موتور پرس و جو همچنان در حال انجام مرتب سازی مجدد مجموعه نتایج در حافظه است، همانطور که توسط یک گره MajorSort در درخت اجرای پرس و جو شناسایی شده است، این نشانه آن است که شاخص مورد استفاده نمی تواند برای ارائه نیاز مرتب سازی پرس و جو استفاده شود. برای ایجاد نمایه مناسب تر، به بخش بعدی مراجعه کنید.
ایجاد نمایه ها
برای ایجاد نمایه ها، مستندات مدیریت فهرست را دنبال کنید. برای اطمینان از اینکه درخواست شما می تواند از شاخص ها استفاده کند، فهرست های منظم (نه چند کلیدی) با فیلدها به ترتیب زیر ایجاد کنید:
- تمام فیلدهایی که در عملگرهای برابری استفاده خواهند شد. برای به حداکثر رساندن شانس استفاده مجدد در پرس و جوها، فیلدها را به ترتیب کاهش وقوع فیلدها در عملگرهای برابری در میان پرس و جوها ترتیب دهید.
- همه فیلدهایی که بر اساس آنها مرتب می شوند (به همان ترتیب).
- فیلدهایی که در عملگرهای محدوده یا نابرابری به ترتیب کاهش انتخاب محدودیت پرس و جو استفاده خواهند شد.
- فیلدهایی که به عنوان بخشی از یک پرس و جو در نمایه بازگردانده می شوند: گنجاندن چنین فیلدهایی در نمایه به نمایه اجازه می دهد پرس و جو را پوشش دهد و از واکشی سند از حافظه اصلی اجتناب کند.
برای جستارهایی که شامل فیلتر کردن و مرتبسازی فیلدهای آرایه میشوند، ایجاد نمایههای Multikey را در نظر بگیرید.
از راهنمایی پرس و جو استفاده کنید
اگر نمایه مناسب تری برای پرس و جو ایجاد کرده اید، اما موتور پرس و جو از آن شاخص استفاده نمی کند، می توانید با استفاده از یک اشاره پرس و جو، اولویت شاخص موتور پرس و جو را لغو کنید.
برای اطلاعات بیشتر در مورد خروجی یک پرس و جو اجرا شده با Query Explain، به مرجع اجرای کوئری مراجعه کنید.