Estimarea costului interogărilor GraphQL
Estimează costul unei operații GraphQL înainte să ajungă la server. Identifică selecțiile profund imbricate și multiplicate de liste, cu fiecare presupunere despre dimensiunea listelor documentată.
Acceptă o operație de cel mult 200.000 de caractere, o schemă de cel mult 1.000.000 de caractere și variabile de cel mult 200.000 de caractere. Numără maximum 10.000 de câmpuri și 64 de niveluri de imbricare, cu dimensiuni de liste de la 1 la 10.000 și costuri de câmpuri de la 0 la 1.000. Estimarea rulează în browser într-o sarcină separată în fundal. Se pot descărca un raport JSON și o defalcare CSV. O singură operație sau mai multe cu numele operației specificat. Fragmentele sunt extinse. Până la 200.000 de caractere. Verifică setările înainte de rulare.
Rezultatul tău
Estimarea costului interogărilor GraphQL
- Lipește operația GraphQL în câmpul principal.
- Lipește schema ca SDL sau JSON de introspecție.
- Ajustează dimensiunea implicită a listelor, argumentele de limitare și costurile câmpurilor dacă serverul folosește alte valori.
- Rulează estimarea și examinează zonele cu cel mai mare cost, apoi descarcă defalcarea JSON sau CSV.
La ce să te aștepți
Acceptă o operație de cel mult 200.000 de caractere, o schemă de cel mult 1.000.000 de caractere și variabile de cel mult 200.000 de caractere. Numără maximum 10.000 de câmpuri și 64 de niveluri de imbricare, cu dimensiuni de liste de la 1 la 10.000 și costuri de câmpuri de la 0 la 1.000. Estimarea rulează în browser într-o sarcină separată în fundal. Se pot descărca un raport JSON și o defalcare CSV.
Modelul de cost
Fiecare câmp selectat are costul de obiect sau de scalar al tipului returnat, înmulțit cu dimensiunile listelor de deasupra sa. Totalul este suma selecțiilor de câmpuri extinse; selecțiile repetate pot astfel supraestima execuția combinată a serverului. __typename nu adaugă cost. Acest model de planificare nu execută un server, directive condiționale sau conținutul listelor imbricate și nu este o limită impusă de server.
Dimensiunile listelor
Un câmp listă își ia dimensiunea din cel mai mare argument de limitare, precum first, last sau limit. Când o valoare este omisă, se folosesc valorile implicite ale variabilelor operației și ale argumentelor schemei. Fără o valoare de limitare se folosește @listSize(assumedSize:), dacă este activat, apoi dimensiunea implicită a listelor din model. @cost(weight:) înlocuiește costul unui câmp. Toate dimensiunile derivate trebuie să fie numere întregi de la 1 la 10.000, iar ponderile de la 0 la 1.000. Operațiile, variabilele sau limitele nevalide și fragmentele ciclice opresc estimarea cu o eroare de tip precizat.
Citirea raportului
Raportul listează presupunerile, cei mai costisitori zece subarbori și arborele complet cu adâncime, multiplicator, dimensiunea listei, cost propriu și costul subarborelui. CSV-ul are un rând pentru fiecare cale de câmp. Referințele la fragmente sunt extinse unde sunt folosite; un fragment ciclic este o eroare de validare a interogării, nu o presupunere de cost finit.