Sì, è possibile cancellare sia la cache buffer Postgres condiviso E la cache del sistema operativo. La soluzione qui sotto è per Windows ... altri hanno già fornito la soluzione Linux.
Come molte persone hanno già detto, per cancellare i buffer condivisi puoi semplicemente riavviare Postgres (non è necessario riavviare il server). Ma solo facendo questo non si cancella la cache del sistema operativo.
Per svuotare la cache del sistema operativo utilizzata da Postgres, dopo aver interrotto il servizio, utilizzare l'eccellente RamMap ( https://technet.microsoft.com/en-us/sysinternals/rammap ), dall'eccellente Sysinternals Suite. Una volta eseguito RamMap, fai clic su "Svuota" -> "Elenco vuoto in standby" nel menu principale.
Riavvia Postgres e vedrai che ora la tua prossima query sarà damm lenta a causa dell'assenza di cache.
Puoi anche eseguire RamMap senza chiudere Postgres, e probabilmente avrai i risultati "no cache" che desideri, poiché come si è già detto, i buffer condivisi di solito danno poco impatto rispetto alla cache del sistema operativo. Ma per un test affidabile, preferirei interrompere postgres come tutti prima di svuotare la cache del sistema operativo per assicurarmene.
Nota: AFAIK, non consiglio di cancellare le altre cose oltre a "Standby list" quando si utilizza RamMap, perché gli altri dati vengono in qualche modo utilizzati e se lo fai potresti potenzialmente causare problemi / perdere dati. Ricorda che stai cancellando la memoria non solo utilizzata dai file postgres, ma anche da qualsiasi altra app e sistema operativo.
Saluti, Thiago L.