מעריך עלות של שאילתת GraphQL
העריכו את עלות הפעולה של GraphQL לפני שהיא מגיעה לשרת. מצאו בחירות רשימות מקוננות ומוכפלות, ותעדו את הנחות גודל הרשימה.
מקבל פעולה של עד 200,000 תווים, סכמה של עד 1,000,000 תווים ומשתנים של עד 200,000 תווים. הוא סופר עד 10,000 שדות ו-64 רמות קינון; גדלי הרשימות הם 1 עד 10,000 ועלויות השדות 0 עד 1,000. האומדן פועל בעובד רקע בדפדפן. קובצי ההורדה הם דוח JSON ופירוט CSV. פעולה אחת או כמה פעולות, עם שם פעולה אם יש יותר מאחת. הפרגמנטים מורחבים. עד 200,000 תווים. בדקו את ההגדרות לפני ההרצה.
התוצאה שלכם
מעריך עלות של שאילתת GraphQL
- הדביקו את פעולת GraphQL בתיבה הראשית.
- הדביקו את הסכמה כ-SDL או introspection JSON.
- התאימו את גודל הרשימה המוגדר כברירת מחדל, ארגומנטי החיתוך ועלויות השדות אם השרת שלכם משתמש בערכים אחרים.
- הריצו את האומדן, עיינו בנקודות החמות ואז הורידו פירוט JSON או CSV.
מה צפוי לקרות
מקבל פעולה של עד 200,000 תווים, סכמה של עד 1,000,000 תווים ומשתנים של עד 200,000 תווים. הוא סופר עד 10,000 שדות ו-64 רמות קינון; גדלי הרשימות הם 1 עד 10,000 ועלויות השדות 0 עד 1,000. האומדן פועל בעובד רקע בדפדפן. קובצי ההורדה הם דוח JSON ופירוט CSV.
מודל העלות
לכל שדה שנבחר יש עלות של אובייקט או scalar לפי סוג ההחזרה שלו, כפול גדלי הרשימות שמעליו. הסכום הוא העלות הכוללת של בחירות השדות לאחר הרחבה; לכן בחירות חוזרות עלולות להעריך ביתר את הביצוע שהשרת ממזג. העלות של __typename היא אפס. מודל התכנון הזה אינו מבצע בפועל בקשת GraphQL בשרת, directives מותנים או תוכן של רשימות מקוננות, ואינו מגבלה שהשרת אוכף.
גדלי רשימות
גודל שדה רשימה נקבע לפי ארגומנט החיתוך הגדול ביותר, כגון first, last או limit. כשערך חסר משתמשים בערכי ברירת המחדל של משתני הפעולה ושל ארגומנטי הסכמה. ללא ערך חיתוך, משתמשים ב-@listSize(assumedSize:) כשהוא מופעל, ולאחר מכן בגודל הרשימה שמוגדר כברירת מחדל במודל. @cost(weight:) מחליף את עלות השדה. כל הגדלים הנגזרים חייבים להיות מספרים שלמים מ-1 עד 10,000, והמשקלים מ-0 עד 1,000. פעולות, משתנים, גבולות ופרגמנטים מחזוריים לא תקינים עוצרים את האומדן עם שגיאה מטיפוס מוגדר.
קריאת הדוח
הדוח מציג הנחות, את עשרת תתי-העצים היקרים ביותר ואת העץ המלא עם עומק, מכפיל, גודל רשימה, עלות עצמית ועלות תת-העץ. ב-CSV יש שורה לכל נתיב שדה. פריסות פרגמנטים מורחבות במקום שבו נעשה בהן שימוש; פרגמנט מחזורי הוא שגיאת אימות שאילתה ולא הנחת עלות סופית.