sql >> Databáze >  >> NoSQL >> MongoDB

Nebezpečí vytváření indexů na MongoDB

Indexy jsou kritickou součástí každé databázové operace. Definování správných indexů může mít velký vliv na výkon vašich databázových serverů. Vytváření indexů v MongoDB má však několik úskalí, se kterými si musíte být vědomi pro své každodenní operace. MongoDB na vysoké úrovni podporuje tři techniky pro vytváření indexů na vašich sbírkách.

1. Sestavení indexu popředí

Když vytvoříte index v popředí, zablokuje všechny ostatní operace s databází – u velké kolekce to může trvat několik hodin. To znamená, že vaše databáze je po dobu sestavení indexu mimo provoz. Vzhledem k tomu, že se jedná o výchozí režim vytváření indexů, není divu, že se mnoho vývojářů střílelo do nohy a spouštělo náhodné sestavení indexu. Opravdu neexistuje žádný dobrý důvod pro spouštění vytváření indexu v popředí na produkčním serveru (pokud nevíte, že kolekce obsahuje malé množství dat).

2. Sestavení indexu na pozadí

Jak název napovídá, proces indexování na pozadí vytváří index na pozadí, aniž by to ovlivnilo dostupnost vašeho databázového serveru. Stále je to však operace náročná na zdroje a měli byste očekávat snížení výkonu. Také protože se to děje na pozadí, může trvat mnohem déle, než se vytvoří indexy v popředí. V předchozích verzích MongoDB (<2.6), když jste vytvořili index na pozadí sestavení na primárním souboru replik, běželo by to jako sestavení v popředí na sekundárních serverech, naštěstí už tomu tak není – je to postavené na pozadí všechny uzly. Pokud je sestavení indexu na pozadí přerušeno, bude pokračovat jako sestavení indexu na popředí při restartu serveru.

3. Rolling Index Build

Proces vytváření postupného indexu vytváří index vždy pouze na jednom uzlu. Zní to nějak takto:

  1. Otočte sekundární uzel ze sady replik (lze to provést změnou portů nebo restartováním v samostatném režimu).
  2. Vybudujte index na tomto uzlu v popředí. Jakmile je index vytvořen, otočte uzel zpět do sady replik.
  3. Jakmile uzel dohoní změny, přejděte k dalšímu uzlu. Pokud je další uzel primární, budete muset provést rs.stepDown(), aby se stal sekundárním.
  4. Opláchněte a opakujte.

Další podrobnosti o procesu vytváření indexu jsou v dokumentaci MongoDB.

Pomocí postupného sestavení indexu můžete vytvořit index bez jakéhokoli významného dopadu na výkon vaší aplikace. S tím je však spojeno převzetí služeb při selhání – vaše aplikace by to tedy měla zvládnout (což stejně potřebuje).

Můžete vytvořit postupné sestavení indexu, pokud nemáte sadu replik? Bohužel pro samostatné instance je jedinou možností „Sestavení indexu na pozadí“.

Sestavení Rolling indexu je náš oblíbený přístup k vytváření indexů ve ScaleGrid. Poskytujeme dokonce uživatelské rozhraní a usnadňujeme vám zahájit celý proces z našeho uživatelského rozhraní. Náš backend provede veškerou orchestraci nezbytnou pro úplné sestavení indexu – spustí sestavení indexu server po serveru. Stačí si s námi nastavit nastavení a poté ukázat a kliknout!

Jako vždy, pokud máte další otázky, můžete nás kontaktovat na adrese [email protected].


  1. Oprava „název indexu musí být řetězec“ při odstraňování více indexů v MongoDB

  2. Použití MongoDB $pull k odstranění dokumentů v poli

  3. Jak nainstalovat MongoDB na Ubuntu 18.04

  4. Co je Express.js?