Az N+1 lekérdezési probléma általános jelei a következő részletes mutatókat tartalmazzák:
- Túlzott számú lekérdezés: A legnyilvánvalóbb jel az, hogy az alkalmazás sokkal több adatbázis -lekérdezést hajt végre a vártnál. Általában egy kezdeti lekérdezést lát a nyilvántartások listájának letöltéséhez, majd egy további lekérdezést követ az egyes rekordokhoz a kapcsolódó adatok lekéréséhez. Például 10 felhasználó lekérése, majd 10 külön lekérdezés futtatása, hogy az egyes felhasználók hozzászólásait csak egy optimalizált lekérdezés helyett 11 lekérdezéssel eredményezzék [1] [3].
- Lassú alkalmazásválasz -idő: Mivel minden lekérdezéshez oda -vissza kell utazni az adatbázisba, sok kis lekérdezés kumulatív hatása jelentősen lelassítja az adatkérelmet. Ez lassabb oldalterheléshez vagy API -válaszokhoz vezet, így az alkalmazás kevésbé reagál a felhasználói kérelmekre [1] [5].
- Magas adatbázis -betöltés: Az adatbázis -kiszolgáló megnövekedett terhelést tapasztal a nagy számú lekérdezés miatt, amelyek megfeszíthetik az erőforrásokat és csökkenthetik a rendszer általános teljesítményét. Ez ronthatja a teljesítményt és korlátozhatja a méretezhetőséget, amikor a felhasználók vagy az adatok száma növekszik [3] [5] [6].
- Láthatatlan a lassú lekérdezési naplókban: Egyetlen lassú lekérdezéssel ellentétben az N+1 probléma gyakran észrevétlenül marad észrevétlenül a lassú lekérdezési naplókban, mert minden egyes lekérdezés gyorsan fut. A sok lekérdezés összesített hatása azonban a teljesítmény lebomlását okozza [2].
- Az ORM által kiváltott váratlan vagy rejtett lekérdezések: Objektum-relációs leképezés (ORM) keretek használatakor az N+1 probléma gyakran lusta terhelés vagy téves konfiguráció miatt merül fel. A kapcsolódó entitásokhoz való hozzáférés egy hurokban további lekérdezéseket válthat ki a kódban kifejezett hívások nélkül, megnehezítve a forráskódot [2] [5] [6].
- Teljesítményű szűk keresztmetszetek az adatkezelési mintákban: Ha az alkalmazás komplex objektumkapcsolatokkal rendelkezik, és több lépésben, nem pedig egyetlen optimalizált lekérdezésben, akkor ez a minta az N+1 probléma erős mutatója [6].
Összefoglalva: a közös jelek váratlanul nagy számú adatbázis -lekérdezést jelentenek arra, hogy mi legyen egy egyszerű adatkeresés, lassú válaszidő több adatbázis -kerek kirándulások miatt, az adatbázis -kiszolgáló fokozott terhelése és a probléma észlelése, mivel az egyes lekérdezések egyénileg gyorsan végrehajtanak, de együttesen késéseket okoznak. Ezek a tünetek különösen elterjedtek az alapértelmezett lusta betöltési viselkedésű OMS -ek használatában alkalmazott alkalmazásokban [1] [2] [3] [5] [6] [7].
Idézetek:
[1] https://planetscale.com/blog/what-is-n-1-query-problem-and-how-to-solve-it
[2] https://stackoverflow.com/questions/97197/what-is-the-n1-selects-problemin-oMorm-object-reational-mapping
[3] https://www.pingcap.com/article/how-to-effiacty-solve-the-n1-query-problem/
[4] https://evnedev.com/blog/development/the-n1-query-problem-what-is-it-n--how-do-you-solve-it/
[5] https://digma.ai/n1-query-problem-and-how-thetect-it/
[6] https://www.neurelo.com/post/what-is-the-n-1-query-problem
[7] https://dev.to/lovestaco/the-n1-query-problem-the-silent-pleformance-miller-2b1c
[8] https://www.pullrequest.com/blog/avoiding-n-1-database-queries-in-asp-net-a-practical-guide/