我即將開始開發一個日誌記錄系統,以便在當前PHP應用程序中進行未來實現,以從MYSQL數據庫獲取負載和使用情況統計信息。記錄mysql查詢
的統計信息將稍後被用來獲得約每秒數據庫調用,查詢時間等
當然信息,當應用程序處於測試階段,這隻會被使用,因爲它肯定會引起有點額外的負載本身。
然而,我最大的問號,現在是,如果我要使用MYSQL登錄查詢,或去一個基於文件系統。我猜想,在使用基於文件的系統來處理日誌時,創建一些允許來自多個位置的文字的東西會有點令人頭疼。
你會怎麼做?
我即將開始開發一個日誌記錄系統,以便在當前PHP應用程序中進行未來實現,以從MYSQL數據庫獲取負載和使用情況統計信息。記錄mysql查詢
的統計信息將稍後被用來獲得約每秒數據庫調用,查詢時間等
當然信息,當應用程序處於測試階段,這隻會被使用,因爲它肯定會引起有點額外的負載本身。
然而,我最大的問號,現在是,如果我要使用MYSQL登錄查詢,或去一個基於文件系統。我猜想,在使用基於文件的系統來處理日誌時,創建一些允許來自多個位置的文字的東西會有點令人頭疼。
你會怎麼做?
的MySQL已經有日誌記錄建立在 - 手動的Chapter 5.2介紹這些。您可能會對常規查詢日誌(所有查詢),二進制查詢日誌(查詢更改數據)和慢日誌(查詢花費太長時間或不使用索引)感興趣。
如果你堅持要用自己的解決方案,你會想要寫一個數據庫,中間層,你的所有DB通話經歷,它可以處理的時機方面。至於你在哪裏編寫它們,如果你在開發中,這並不重要,但使用第二個分貝的想法並不差。不需要使用完全獨立的數據庫,就像使用不同的MySQL實例一樣(在不同的機器上,或者只是使用不同端口的不同實例)。我會使用第二個MySQL實例而不是文件系統 - 您將獲得像SUM和AVG一樣的所有優秀SQL函數來解析數據。
如果你是在MySQL做測試,你應該將結果存儲在不同的數據庫如Postgres
,這樣你就不會與你的操作增加負載。
如果你感興趣的是長期的,非實時的分析,打開MySQL的定期查詢記錄。有很多工具可用於對查詢日誌(常規查詢和慢查詢)進行分析,爲您提供有關運行時間,返回的平均行數等信息。似乎是您在尋找的內容。
使用一般的日誌,它會顯示客戶端活動,包括所有的查詢:
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
如果你需要在每個查詢花費的時間非常詳細的統計數據,使用慢日誌用long_query_time時間的0(或一些其它足夠短的時間):
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
然後使用http://www.maatkit.org/根據需要來分析日誌。
我同意macabail但只補充一點,你可以對夫婦這與一個cron作業和一個簡單的腳本來提取和生成您可能需要的任何統計數據。