N+1 -kyselyongelman yleisiä merkkejä ovat seuraavat yksityiskohtaiset indikaattorit:
- Kyselyjen liiallinen määrä: Ilmeisin merkki on, että sovelluksesi suorittaa paljon enemmän tietokantakyselyjä kuin odotettiin. Tyypillisesti näet yhden alkuperäisen kyselyn hakemaan luettelon tietueista, jota seuraa jokaiselle tietueelle lisäkyselyihin liittyvien tietojen hakemiseksi. Esimerkiksi 10 käyttäjän hakeminen ja sitten 10 erillistä kyselyä saadaan kunkin käyttäjän viestien saamiseksi 11 kyselyyn vain yhden optimoidun kyselyn sijasta [1] [3].
- Hidas sovellusvasteajat: Koska jokainen kysely vaatii edestakaisen matkan tietokantaan, monien pienten kyselyjen kumulatiivinen vaikutus hidastaa merkittävästi tiedonhakua. Tämä johtaa hitaampiin sivujen latauksiin tai API -vastauksiin, mikä tekee sovelluksesta vähemmän reagoivan käyttäjän pyyntöihin [1] [5].
- Korkea tietokantakuorma: Tietokantapalvelin kokee lisääntyneen kuorman suuren määrän kyselyjen vuoksi, jotka voivat rasittaa resursseja ja vähentää järjestelmän yleistä läpimenoa. Tämä voi heikentää suorituskykyä ja rajoittaa skaalautuvuutta käyttäjien tai tietojen lukumäärän kasvaessa [3] [5] [6].
- Näkymätön hitaissa kyselylokeissa: Toisin kuin yksi hidas kysely, N+1 -ongelma jää usein huomaamatta hitaissa kyselylokeissa, koska jokainen yksittäinen kysely toimii nopeasti. Monien kyselyjen kokonaisvaikutus aiheuttaa kuitenkin suorituskyvyn heikkenemistä [2].
- ORM: n laukaisemat odottamattomat tai piilotetut kyselyt: Kun käytät objekti-suhteellista kartoitusta (ORM) -kehyksiä, N+1 -ongelma syntyy usein laiskojen kuormituksen tai väärien konfiguroinnin vuoksi. Liittyneiden kokonaisuuksien käyttäminen silmukassa voi laukaista lisäkyselyjä ilman nimenomaisia puheluita koodissa, mikä vaikeuttaa vain etsimällä lähdekoodia [2] [5] [6].
- Suorituskykypullonkaulat tietojen noutamismallissa: Jos sovelluksessasi on monimutkaisia objektisuhteita ja noudetaan niihin liittyviä tietoja useissa vaiheissa kuin yhdessä optimoidussa kyselyssä, tämä kuvio on vahva indikaattori N+1 -ongelmasta [6].
Yhteenvetona voidaan todeta, että yleiset merkit ovat odottamattoman suuri määrä tietokantakyselyjä siitä, minkä pitäisi olla yksinkertainen tiedonhaku, hidas vastausajat useiden tietokannan pyöreiden matkojen vuoksi, lisääntynyt kuormitus tietokantapalvelimella ja vaikeuksissa havaita ongelmaa, koska jokainen kysely suoritetaan erikseen nopeasti, mutta aiheuttaa viivästyksiä. Nämä oireet ovat erityisen yleisiä sovelluksissa, joissa käytetään ORM: ää, joilla on oletusarvoinen laiska kuormituskäyttäytyminen [1] [2] [3] [5] [6] [7].
Viittaukset:
.
.
.
.
[5] https://digma.ai/n1-query-problem-and-how-to-detect-it/
.
[7] https://dev.to/lovestaco/the-n1-query-problem-the-silent-performance-killer-2b1c
.