從純粹的性能角度來看,你認爲存儲簡單數據(預定義消息)更好。你會說它是更多的工作來打開文件句柄,json_decode「主題」和「身體」,並關閉文件或查詢數據庫(SELECT subject
,body
從predefine
WHERE ID ='message1'假設ID是主鍵) 。我將只有5-10個預定義的消息,但是我想假設數百個用戶可能同時使用此應用程序。平坦的文件與MySQL的非常簡單的數據
回答
如果消息是預定義的並且是隻讀的,我會簡單地將它作爲常量硬編碼到PHP源文件中。
如果確實發生了變化,讓數據庫處理併發問題。通過主鍵讀取行非常快,特別是如果表中只有10行。這可能不是你的應用程序會遇到性能問題的地方。
對於5-10條消息,平面文件效率更高。 MySQL是一個獨立的進程,所以簡單的跨進程通信會導致更多的CPU負載,然後解析一個小文件。在100條消息中,我會開始考慮一個更復雜的系統,就像一個簡單的索引文件。即使這樣,SQL也是一種矯枉過正。只有在10000或100000條消息時,纔會開始從數據庫中看到好處。
像丹尼爾說的那樣,如果你已經在使用數據庫然後把它們扔到那裏。如果您的應用程序是守護進程,請在重新啓動時從數據庫加載它們並將它們緩存在內存中,這樣可以保證最佳性能。
對。但後來它運行在一個web服務器(也許是apache),他可以將它緩存在那裏。例如,如果它是Django,我會使用其中一個緩存後端。 – Sid 2012-01-30 21:19:57
讀取平面文件對於小文件是非常快速的......數據庫的性能優勢來自於您試圖尋找特定數據時。如果你只是抓取一個特定的文件(比如,基於文件名:msg_1.txt
,msg_2.txt
等),那麼使用flatfile系統會更好。
也就是說,正如JB Nizet所指出的那樣,如果您只處理幾條消息,請不要打擾......使用常量或在您需要的PHP文件中創建一個數組,可以爲include_once()
定義如下:
$msg = array(
'msg1'=>array('sub'=>"subject",'body'=>"body Text"),
'msg2'=>array('sub'=>"subject 2",'body'=>"body Text 2"),
//...etc.
);
預定義的可以由管理員編輯,當他想改變他們,但顯然沒有太多。它們只能被有效地讀取。我看到MySQL整天關閉服務器,並擔心在不必要時減少CPU使用量。 – user974896 2012-01-30 21:18:42
對於使用索引和小表格的簡單mysql查詢,您將在第二個範圍的低10,000秒內處理查詢時間,所以我懷疑你會在那裏打牆(服務器應該釋放連接快速,幾百個併發用戶應該不成問題)。但是,您應該研究一個持久連接,因爲實時浪費會創建和刪除連接。然而,在你的情況下(你知道你總是要通過一個單一的鍵,即ID或文件名)訪問,我通常使用平面文件或預定義的數組。 – 2012-01-30 21:24:32
- 1. 閱讀平坦的文件與不平坦的沒有。列
- 2. 非常簡單的Glassfish文件傳輸
- 3. 非常簡單的mysql加入
- 4. 非常非常非常簡單的電子郵件選項
- 5. 複雜(或非常非常簡單)的MySQL查詢?
- 6. 非常簡單的WebForm與masterpage
- 7. 非常簡單的現金與循環
- 8. 非常非常簡單的MVVM問題
- 9. AS3 - 非常簡單的文字冒險
- 10. 非常簡單的代碼
- 11. 非常簡單的查詢
- 12. 非常簡單的滑塊
- 13. 非常簡單的java cms
- 14. jQuery非常簡單的插件
- 15. C - 從文件讀取(非常簡單)
- 16. 有沒有簡單的方法來使嵌套數組平坦?
- 17. 對非簡單數據使用MySQL OUTFILE
- 18. 使用非常簡單的MySQL語句進行全文搜索
- 19. 簡單的mysql數據庫
- 20. XNA的非常簡單的菜單
- 21. jquery非常簡單的插件,非常基本
- 22. 簡單的自定義Swing JComponent總是平坦的
- 23. 關鍵值平面文件數據庫簡單的C或C++
- 24. 爲什麼日誌文件通常是平坦的?
- 25. 跨數據中心:MySQL複製與簡單文件複製?
- 26. 返回平均值,非常簡單的C#代碼
- 27. Android簡單的水平RecyclerView非常緩慢,不光滑
- 28. 關於mySQL的非常簡單的查詢(初學者問題)
- 29. 非常簡單的MySQL語法錯誤,我是新來的
- 30. POSTMAN中的非常簡單的POST
對於幾百個用戶來說無所謂。如果我使用其他的東西的分貝,我會把消息放在分貝以及 – Daniel 2012-01-30 21:10:59