2013-08-29 8 views
7

Sto cercando di raccogliere tutte le mie query su mongodb rispetto alla mia Applciation. Quindi ho impostato il livello di profilazione su 2 in modo che registri tutte le query. Come parte dell'architettura, non appena l'utente effettua l'accesso, ci saranno aggiornamenti continui su mongodb.Perché le query all'interno della raccolta system.profile vengono sovrascritte

Ma ho osservato è che il conteggio system.profile viene ridotta non so perché

> db.system.profile.count() 
322 
> db.system.profile.count() 
351 
> db.system.profile.count() 
202 
> db.system.profile.count() 
136 
> db.system.profile.count() 
233 

Perché nel mio caso le query vengono sovrascritti ??

C'è qualche possibilità che io possa registrare tutte le mie query distinict che accadono per la mia applicazione.

Ho bisogno di questo perché posso rimuovere/aggiungere alcuni degli indici su uno della mia collezione.

risposta

20

system.profile è una raccolta con limite con dimensione predefinita di 1 MB, in modo che i documenti vengano eliminati in base al naturale (rispetto al timestamp di inserimento) in modo da creare spazio per i nuovi documenti.

Al fine di aumentare la dimensione della raccolta system.profile (diciamo 10 MB) fare:

1) Stop profiler: db.setProfilingLevel(0)

2) Goccia system.profile: db.system.profile.drop()

3) creare una raccolta molto più grande system.profile manualmente: db.createCollection("system.profile", { capped: true, size: 1024 * 1024 * 10 })

4) Attivare il profiling di nuovo

Se, in media, una collezione da 1 MB misura circa 200-300 documenti, le nuove impostazioni si adattano a circa 2.000-3.000 documenti. Aumentare la dimensione del file system.profile se necessario.

+0

grande risposta, vi ringrazio molto. sarà sicuramente utile per chi usa mongodb. – Pawan

Problemi correlati