我想知道當我運行查詢時,數據庫的內容在我係統的RAM中。該數據集大約4.1 GB,我的機器有8 GB的RAM。我是否每次運行SELECT
或UPDATE
查詢時都從磁盤讀取數據?如何判斷我的Postgres 9.2數據庫是否在內存中運行?
回答
所有系統都允許跟蹤IO活動。所以你可以使用系統監控工具 - 例如,有一個用於linux的iotop。
如果該查詢是在系統上正在運行的唯一東西,請使用系統工具(vmstat,sar)查看IO執行時是否出現尖峯。如果還有很多其他事情正在進行,可能很難弄清楚你想要什麼,因爲沒有簡單的方法來區分從磁盤讀取的數據和從操作系統的文件系統緩存中讀取的數據。您可以打開track_io_timing並查看結果時間是否與來自RAM的數據一致。
除了像其他人所建議的那樣監視IO活動,您還可以運行查詢來利用PostgreSQL的統計跟蹤。
以下查詢將顯示您的緩存命中率。如果僅擊中緩存,命中率應該在0.99或更高的範圍內,如果你做了大量的磁盤讀取,它會更低。
SELECT
sum(heap_blks_read) as heap_read,
sum(heap_blks_hit) as heap_hit,
sum(heap_blks_hit)/(sum(heap_blks_hit) + sum(heap_blks_read)) as ratio
FROM
pg_statio_user_tables;
這個查詢,以及其他性能的查詢可以發現here
他也可以在這裏找到官方的數據收集:http://www.postgresql.org/docs/9.1/static/monitoring-stats.html –
這提供了不對稱的信息。如果命中率非常高,你知道它來自記憶。但是,如果它很低,您不知道它是真正來自磁盤還是來自操作系統管理的緩存。 – jjanes
- 1. 如何判斷數據庫中的表是否存在?
- 2. 如何判斷我的jQuery代碼是否在iFrame中運行?
- 3. 如何判斷我的Javascript代碼是否在Jint中運行?
- 4. 我的Perl程序如何判斷是否在mod_perl下運行?
- 5. 如何判斷數據庫是否需要在Android中升級?
- 6. 如何判斷我是否在網絡服務器下運行?
- 7. 如何判斷Postgres在Java中的時間戳是否爲空
- 8. 如何判斷我的Google內容實驗是否正在運行?
- 9. 如何判斷我的容器是否在Kubernetes集羣內運行?
- 10. 如何判斷數據校驗功能是在Postgres的
- 11. 如何判斷我的Android應用是否由InstrumentationTestRunner運行?
- 12. 如何判斷網頁是否存在?
- 13. 如何判斷oracle數據庫是否安裝在電腦上
- 14. 如何判斷SQL Server數據庫是否正在備份
- 15. 如何判斷其他人是否正在使用數據庫?
- 16. 如何判斷內存地址在OS中是否空閒?
- 17. python程序如何判斷它是否在emacs中運行?
- 18. 如何判斷(VB)代碼是否在Visual Studio中運行?
- 19. 如何判斷Postgres中的記錄是否發生了變化
- 20. SQL Server:如何判斷數據庫是否是系統數據庫?
- 21. 如何判斷表中是否存在行?
- 22. 如何判斷autovacuum是否在Windows Server 2003上爲我的PGSQL數據庫運行?
- 23. 如何判斷MemberInfo是否爲內部
- 24. 如何判斷「內聯」是否工作?
- 25. 如何判斷NSUserDefaults是否已保存?
- 26. 如何判斷NSManagedObject是否已保存?
- 27. 如何判斷數據庫是否關閉或不可用?
- 28. 如何判斷數據庫更新是否成功?
- 29. 如何判斷數據庫記錄是否已更改?
- 30. 如何判斷sqlite數據庫文件是否有效
你肯定會被擊中'UPDATE'盤爲你的數據庫將不遵從ACID,如果它只是作爲內存是不是寫給內存耐用(D在ACID)。 – CadentOrange