sql >> Database >  >> NoSQL >> MongoDB

Is het veilig om het journaalbestand van mongodb te verwijderen?

TL;DR:Je hebt twee opties. Gebruik de --smallfiles opstartoptie bij het starten van MongoDB om de grootte van de journaalbestanden te beperken tot 128 MB, of schakel journaling uit met behulp van de --nojournal optie. --nojournal gebruiken in productie is meestal een slecht idee, en het is vaak logisch om ook tijdens de ontwikkeling verschillende schrijfproblemen te gebruiken, zodat je geen verschillende code hebt in dev en prod.

Het lange antwoord :Nee, het verwijderen van het journaalbestand is niet veilig. Het idee van journaling is dit:

Er komt een schrijfactie binnen. Om die schrijfactie persistent (en de database duurzaam) te maken, moet de schrijfactie op de een of andere manier naar de schijf gaan.

Helaas duurt het schrijven naar de schijf eonen vergeleken met het schrijven naar het RAM, dus de database staat voor een dilemma:niet schrijven naar de schijf is riskant, omdat een onverwachte afsluiting gegevensverlies zou veroorzaken. Maar het schrijven naar de schijf voor elke afzonderlijke schrijfbewerking zal de prestaties van de database zo erg verminderen dat deze voor praktische doeleinden onbruikbaar wordt.

In plaats van naar de gegevensbestanden zelf te schrijven, en in plaats van dit voor elk verzoek te doen, wordt de database nu gewoon toegevoegd aan een journaalbestand waarin alle bewerkingen worden opgeslagen die nog niet zijn vastgelegd in de daadwerkelijke gegevensbestanden. Dit is een stuk sneller, omdat het bestand al 'hot' is omdat het de hele tijd wordt gelezen en geschreven, en het is maar één bestand, niet een heleboel bestanden, en ten slotte, omdat het alle lopende bewerkingen elke 100 ms in een batch schrijft standaard. Het verwijderen van dit bestand terwijl er iets aan de hand is, veroorzaakt grote schade.



  1. De cache_store instellen in een initializer

  2. Verwijder een object uit een geneste array met $pull en $[identifier] (mongoDB 3.6)

  3. Redis Enterprise Clustering-opdrachtfout 'CLUSTER'

  4. Wat is de standaardcachestrategie bij gebruik van Redis met spring of springboot?