MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

È sicuro eliminare il file journal di mongodb?

TL;DR:Hai due opzioni. Usa --smallfiles opzione di avvio all'avvio di MongoDB per limitare la dimensione dei file journal a 128 MB o disattivare il journaling utilizzando --nojournal opzione. Usando --nojournal in produzione è di solito una cattiva idea e spesso ha senso utilizzare problemi di scrittura diversi anche durante lo sviluppo in modo da non avere codice diverso in dev e prod.

La lunga risposta :No, l'eliminazione del file journal non è sicura. L'idea del journaling è questa:

Arriva una scrittura. Ora, per rendere quella scrittura persistente (e il database durevole), la scrittura deve in qualche modo andare sul disco.

Sfortunatamente, le scritture sul disco richiedono eoni rispetto alle scritture sulla RAM, quindi il database si trova in un dilemma:non scrivere sul disco è rischioso, perché un arresto imprevisto causerebbe la perdita di dati. Ma la scrittura sul disco per ogni singola operazione di scrittura ridurrà le prestazioni del database così gravemente da renderlo inutilizzabile per scopi pratici.

Ora, invece di scrivere sui file di dati stessi e invece di farlo per ogni richiesta, il database verrà semplicemente aggiunto a un file journal in cui archivia tutte le operazioni che non sono state ancora impegnate nei file di dati effettivi. Questo è molto più veloce, perché il file è già "caldo" poiché viene letto e scritto continuamente, ed è solo un file, non un mucchio di file e, infine, perché scrive tutte le operazioni in sospeso in un batch ogni 100 ms per impostazione predefinita. L'eliminazione di questo file nel mezzo di qualcosa provoca il caos.