我們要記錄所有數據庫查詢到記錄表,這可能嗎?DBMS查詢日誌,有可能嗎?
1
A
回答
2
從SQL Server的角度......
正如其他人所建議的,則SQL Server Profiler是肯定走一條路,但你要承擔的資源這樣做砸。如果你選擇這種方法,你必須實現它作爲服務器端跟蹤,而不是通過GUI。
您可能還會有一些成功的監控,記錄動態管理視圖(DMV)的內容以查詢執行統計信息等內容。
你會想看看DMV的如:
例如,這裏是可以用來識別查詢CPU消耗最差的前20個SQL查詢。不完全是你在做什麼之後,但它確實演示瞭如何使用您感興趣的DMV。
SELECT TOP 20
qs.sql_handle,
qs.execution_count,
qs.total_worker_time AS Total_CPU,
total_CPU_inSeconds = --Converted from microseconds
qs.total_worker_time/1000000,
average_CPU_inSeconds = --Converted from microseconds
(qs.total_worker_time/1000000)/qs.execution_count,
qs.total_elapsed_time,
total_elapsed_time_inSeconds = --Converted from microseconds
qs.total_elapsed_time/1000000,
st.text,
qp.query_plan
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY qs.total_worker_time DESC
1
4
對於SQL Server,請參閱this answer about sql server profiler。對於mysql,the query log是一個解決方案。但是,它們都寫入文件,但如果要查詢數據,則始終可以解析日誌文件並將它們插入到表中。
但請注意,日誌記錄不是免費的。在這兩種情況下,你會看到一些性能下降。如果您只想記錄應用程序的查詢,則可以選擇在該處記錄查詢(可選擇異步)。你必須測試看看最好的選擇。
編輯:而且還取決於你的業務量,記錄所有的查詢可以吃大量的磁盤空間在很短的時間量。如果你登錄的應用程序,你可以使用一個日誌庫,像nlog具有側翻系統(即,如果日誌文件達到> 100 MB,然後開始刪除最早的文件)。在這三種情況下,您還可以留出一個僅用於日誌記錄的分區,因此它不會填滿您的主硬盤。
相關問題
- 1. MySQL查詢日誌
- 2. Elasticsearch查詢日誌
- 3. SpringData:有可能在查詢註釋中有子查詢嗎?
- 4. 您可以在MySQL Replication Server上啓用日誌查詢嗎?
- 5. 這個查詢可能嗎?
- 6. MongoDB查詢 - 這可能嗎?
- 7. 紅寶石有日誌查看器嗎?
- 8. 子查詢中的子查詢 - 有可能嗎?
- 9. Oracle dotnet DBMS輸出查詢
- 10. MySQL查詢日誌截斷查詢
- 11. 解析Windows事件日誌,有可能嗎?
- 12. Log4J - 自動刷新日誌文件,有可能嗎?
- 13. 是否有可能在MySQL常規/慢速查詢日誌中隱藏密碼?
- 14. sphinxQl獲得查詢日誌
- 15. SQL Server - 查詢日誌?
- 16. 啓用mysql查詢日誌
- 17. 日誌數據庫查詢
- 18. Mysqld和日誌查詢
- 19. MySQL:日誌摘要查詢
- 20. 查詢Android短信日誌
- 21. 跳過慢查詢日誌
- 22. mysql慢查詢日誌
- 23. joomla緩慢查詢日誌
- 24. 日誌postgres查詢消息
- 25. 查詢Abra Alerts 5.1日誌?
- 26. 如何分析MySQL慢速查詢日誌或MySQL常規查詢日誌?
- 27. 帶有可選聚合和組的SQL查詢可能嗎?
- 28. 查看較早的查詢日誌 - MySQL
- 29. 只能爲單個數據庫打開MySQL常規查詢日誌嗎?
- 30. Hibernate - StaleObjectStateException在查詢中可能嗎?
waw ..太棒了!謝謝。 – esquare 2011-02-18 13:18:32