我正在考慮創建一個json/xml /文本的東西插入到MySQL數據庫,以便PHP頁面將讀取此而不是MySQL查詢。當數據在mysql數據庫中更新時,它也會更新json/xml文件。這是一個好主意嗎?看起來,這將有更少的MySQL查詢,所以我認爲這可能是好的。Php,我應該使用json而不是mysql嗎?
回答
看來,這將有更少的mysql查詢,所以我認爲這可能是好的。
這取決於。可能不會。
你打算做的是一種形式caching。如果頁面上使用的查詢真的非常複雜,並且需要很長時間才能進行基準測試,將結果存儲在緩存文件中並在數據更改時更新結果有時是件好事。
但是,在每個請求上運行一些簡單的SELECT查詢,無需擔心性能問題。如果您沒有看到任何實際的性能問題,那麼您最好不要使用SQL查詢。一個正確索引的數據庫真的非常快。
這個。 @ Malixxl的問題是一個不成熟優化的經典案例... – 2012-02-29 09:15:32
我想使用它來處理那些並未更新的頁面,如存檔頁面或舊消息。但是,有簡單的查詢。 – Malixxl 2012-02-29 09:16:31
@Malix然後緩存可能沒有意義。 – 2012-02-29 09:19:53
這真的取決於我想。如果您正在編寫一個要加載AJAX的頁面,並且您的設置或配置很少更改,但需要每次加載,請繼續並將其寫入json文件。
如果您正在加載的內容是動態的,或者您正在通過服務器端腳本加載它,那麼MySQL將是必須的。
當心:如果您開始將設置或數據寫入json文件,您可能會遇到一百萬個安全和權限問題。
我在編寫一個非常類似的答案的途中,但你幾乎涵蓋了它。將敏感信息存儲在打開的json文件中的安全隱患是非常可怕的。具有任何知識的攻擊者將能夠下載該文件並讀取其中的所有信息。我強烈建議你使用MySQL表,由於安全性,易用性和未來的打樣 – DarkMantis 2012-02-29 09:10:58
取決於您的應用程序大小。如果幾乎沒有什麼東西需要與數據庫交互。你可以用JSON存儲來做。
但是,如果數據庫規模很大並且想要使用RDBMS概念,那麼它將很難管理。
我想請你去通過這篇文章:
不錯的文章。謝謝。 – Malixxl 2012-02-29 09:23:11
@Malixxl不要讓這個可怕的文章欺騙你。它與現實生活無關。 – 2012-02-29 09:27:00
什麼是你的目標是什麼?獲得更多的表現?
性能優化的第一條規則: 知道你的瓶頸!不要優化黑盒子。在每次優化之前和之後做基準測試。
我懷疑你的數據庫是你目前的瓶頸。即使如此,也有更好的方法來提高性能,即避免語句,而不是將結果存儲在json/text文件中。
使用MySQL查詢緩存
MySQL是在緩存效果真的很好。你不應該自己照顧緩存結果。這裏重要的是:足夠的RAM。結帳MySQL的文檔的更多信息:http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
實現更高速緩存層
爲了獲得你可以實現第二個高速緩存層更高的性能,以避免甚至調用數據庫之前的MySQL數據庫。您可以使用memcached或其他NoSQL解決方案(Redis,MongoDB等)以非持久,快速的方式存儲初始結果(當然,您需要首先從數據庫獲取結果)。
瞭解你的瓶頸
正如我之前所說的,在性能優化最重要的是要知道你的瓶頸是,你用優化多少贏了。至少對於stat來說這是一種非常好的感覺:嘿,......在我們做了XYZ之後,系統速度提高了6000%。 :)
也許你的數據庫不是現在需要加速的東西。也許安裝APC會加快你的應用程序。 :)
但是回到你的問題:如果你真的想將這些結果存儲在JSON /文本文件中,你應該將這些文件存儲在tmpfs/RAM文件系統中 - 這樣它們就可以非常快地寫入和讀取。
- 1. 我應該使用NoSQL而不是MySQL嗎?
- 2. 我應該使用JQuery而不是PHP來加載外部JSON嗎?
- 3. 我應該用漆而不是nginx嗎?
- 4. 使用JSON而不是MySQL?
- 5. 我應該在MySQL中使用SMALLINT而不是DATETIME來節省空間嗎?
- 6. 我應該使用純PHP/MySQL開發Web應用程序嗎?
- 7. 我應該使用PhoneGap而不是增加Android SDK嗎?
- 8. 我應該使用常規服務器而不是AWS嗎?
- 9. 我應該使用Request.Params而不是顯式地執行Request.Form嗎?
- 10. 我應該使用別的東西而不是setTimeout嗎?
- 11. 我應該使用基於java的重寫而不是mod_rewrite嗎?
- 12. Mysql。我應該使用ID嗎?
- 13. PHP - 我應該使用類嗎?
- 14. 我應該使用PHP include嗎?
- 15. 我應該使用JSON還是XML?
- 16. 我應該使用XMLHttpRequest/JSON還是iFrame?
- 17. 我應該使用SQL還是JSON
- 18. 我應該用GTK +而不是WinForms for Mono重寫GUI嗎?
- 19. 我應該在MySQL中使用blob還是文本JSON?
- 20. 我應該使用MySQL還是MongoDB?
- 21. 我應該總是使用GL_CULL_FACE嗎?
- 22. 我應該總是使用webservice嗎?
- 23. 我應該總是使用HTML Doctypes嗎?
- 24. 我也應該使用numpy.float64而不是Python float當使用numpy.array
- 25. 我應該使用Application.Lock()嗎?
- 26. 我應該使用Zend_Form嗎?
- 27. 我應該使用Umbraco嗎?
- 28. 我應該使用AJAX嗎?
- 29. 我應該使用Bootstrap嗎?
- 30. 我應該使用memcache嗎?
您將遇到很多開銷和一致性問題。 MySQL查詢有什麼問題? – glglgl 2012-02-29 09:06:12
我認爲更少的查詢會更好的服務器。我想在不是那麼活躍的頁面上使用它,有1-2整個表的更新。 – Malixxl 2012-02-29 09:07:11
取決於網站正在查看的頻率和數據庫的大小。如果數據庫的內容很大,我寧願使用mysql。 – trampi 2012-02-29 09:08:42