2011-02-25 20 views
1

我有一個php腳本,每次執行大約1個小時,在運行時,它需要存儲穩定的註釋流,以便稍後查看它的功能。基本上,每條評論都包含一個時間戳和一個簡短描述,例如「2/25/2010 6:40:29 PM:更新了項目255的價格」。速度:MySQL與文件輸出

那麼哪個更快,將其輸出到.txt文件,或將其插入到MySQL數據庫中?另外,我應該使用PHP的date()中的時間戳,還是應該在MySQL中創建一個時間對象?

我的問題的第二部分是,由於程序將運行大約一個小時,我應該每次登錄評論時連接到MySQL,插入數據並關閉與MySQL數據庫的連接,或者我應該只需連接一次,爲程序運行時插入數據,然後在程序退出時關閉連接,大約在創建初始連接一小時後?

非常感謝您的建議。

回答

3

這取決於您在一天結束時對數據的需求。您是否需要對滾動瀏覽文件之外的數據進行審計?如果您不需要瀏覽數據或永久存儲數據,那麼平面文件將比MySQL更快,如果您只是追加到文件的末尾,很可能是這樣。

如果你需要的數據更有用,你會想將它存儲在MySQL中。我建議你組織你的表所示:

id int 
timestamp datetime default now() 
desc varchar 

這樣,你不必實際創建PHP時間戳,只是讓MySQL的做的工作,那麼你會Ë能夠做更復雜的查詢關你的桌子。但是,您想要考慮的另一個考慮因素是數據的大小,因爲這也會影響您的最終決定。

+0

好吧,我可能會每週清理日誌,但是您怎麼看待MySQL會話的連接?我應該爲每個請求連接/關閉,還是一次完成並在60分鐘的運行時間內發送查詢? – LostInTheCode 2011-02-25 23:53:23

+0

我會設置一批語句,並在您輸入X筆記錄時執行它們。你可以保持在同一個線程,或產生第二個線程。連接池或持久連接可能會使您受益,因爲打開和關閉連接通常很昂貴(資源明智)。 – dmcnelis 2011-02-26 00:06:58

2

如果您只是簡單地記錄信息供以後查看,寫入文件將會更快。寫入數據庫仍然需要編寫某處,並且您會獲得數據庫引擎的額外開銷。

1

根據我的經驗,編寫.txt文件比使用MySQL編寫日誌要快得多。看,如果你寫數據庫的意見,那麼你必須編寫更多的代碼來獲得這些意見的DB以後,而不是隻使用貓或更多或vi或類似的看到的評論。

如果您選擇數據庫路由:在您的小時內保持連接處於打開狀態是完全正常的,但是如果您在一段時間內沒有寫入數據庫,則必須能夠處理「服務器消失」。

- pete

+0

如何檢測「服務器已關閉」,以及如何處理? – LostInTheCode 2011-02-26 00:02:58