Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Az írási teljesítmény optimalizálásával a lehető legtöbbet hozhatja ki a MongoDB-hez készült Azure Cosmos DB korlátlan skálázásából. Más felügyelt MongoDB-szolgáltatásokkal ellentétben a MongoDB API automatikusan és transzparensen skálázza a gyűjteményeket (szegmenses gyűjtemények használatakor) a végtelen skálázáshoz.
Az adatok írási módjának figyelembe kell vennie ezt azáltal, hogy párhuzamosítja és skálázza az adatokat a szegmensek között, hogy a lehető legtöbb írást lehessen kihozni az adatbázisokból és gyűjteményekből. Ez a cikk az írási teljesítmény optimalizálásának ajánlott eljárásait ismerteti.
A terhelés szétosztása a szegmenseken
Ha adatokat ír a MongoDB-gyűjteményhez készült szegmenses API-ba, az adatok apró szeletekre lesznek felosztva (szegmensekre bontva), és a szegmenskulcs mező értéke alapján minden szegmensbe meg lesz írva. Az egyes szeleteket úgy tekintheti, mint egy virtuális gép kis részét, amely csak egy egyedi szegmenskulcs-értéket tartalmazó dokumentumokat tárol.
Ha az alkalmazás nagy mennyiségű adatot ír egyetlen szegmensbe, ez nem lesz hatékony, mert az alkalmazás csak egy szegmens átviteli sebességét maximálisan kihasználná ahelyett, hogy a terhelést az összes szegmensre terjesztené. Az írási terhelés egyenletesen oszlik el a gyűjteményben azáltal, hogy párhuzamosan ír számos egyedi szegmenskulcs-értékkel rendelkező dokumentummal.
Erre példa egy termékkatalógus-alkalmazás, amely a kategóriamezőre van skálázva. Ahelyett, hogy egyszerre egy kategóriába (szegmensbe) írnál, jobb, ha az összes kategóriára egyszerre írunk a maximális írási sebesség elérése érdekében.
Indexek számának csökkentése
Az indexelés nagyszerű funkció az adatok lekérdezéséhez szükséges idő drasztikus csökkentéséhez. A legrugalmasabb lekérdezési élmény érdekében a MongoDB API-ja alapértelmezés szerint engedélyezi az adatok helyettesítő indexét, hogy az összes mező lekérdezéseit villámgyorsan elvégezhesse. A helyettesítő indexeket tartalmazó indexek azonban további terhelést okoznak az adatok írásakor, mivel az írások megváltoztatják a gyűjteményt és az indexeket.
Ha az indexek számát csak a lekérdezések támogatásához szükséges indexekre csökkenti, az írások gyorsabban és olcsóbban lesznek. Általános szabályként a következőket javasoljuk:
- Minden olyan mezőnek, amelyre szűr, rendelkeznie kell hozzá egy egymezős indexel. Ez a beállítás többmezős szűrést is lehetővé tesz.
- A rendezendő mezők minden csoportjának összetett indexet kell használnia az adott csoporthoz.
A MongoDB-illesztőprogramok hamisra rendezve
Alapértelmezés szerint a MongoDB-illesztőprogramok a rendezett beállítást "true" értékre állítják be az adatok írásakor, amely az egyes dokumentumokat egyenként írja. Ez a beállítás csökkenti az írási teljesítményt, mivel minden írási kérelemnek várnia kell az előzőre. Adatok írásakor állítsa ezt a beállítást hamis értékre a teljesítmény javítása érdekében.
db.collection.insertMany(
[ <doc1> , <doc2>, ... ],
{
ordered: false
}
)
A köteg optimális méretének és menetszámának finomhangolása
Az írási műveletek párhuzamosítása számos szálon/folyamaton kulcsfontosságú az írások skálázásához. A MongoDB API legfeljebb 1000 dokumentumból álló kötegekben fogad írásokat minden egyes folyamathoz/szálhoz.
Ha folyamatonként/szálonként több mint 1000 dokumentumot ír egyszerre, az ügyfélfunkcióknak insertMany() körülbelül 1000 dokumentumra kell korlátozódnia. Ellenkező esetben az ügyfél megvárja az egyes kötegek véglegesítését, mielőtt továbblépne a következő kötegre. Bizonyos esetekben a kötegek felosztása kevesebb vagy valamivel több mint 1000 dokumentummal gyorsabb lesz.
Következő lépések
- További információ a MongoDB API-ban történő indexelésről.
- További információ az Azure Cosmos DB horizontális skálázásáról /particionálásáról.
- További információ a gyakori problémák elhárításáról.
- Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával
- Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervezővel