我有一個網站運行在共享主機沒有memcached。 那麼,如何將MySQL內存數據庫作爲對象緩存與memcached一樣?PHP,MySQL內存數據庫和memcached
回答
我會說,如果你運行一個需要memcached的網站,你不應該在共享主機上運行它。
這是我的輕浮的答案。這裏有一個真實的答案:
Memcached比MEMORY存儲引擎有一些好處。
- 存儲分佈在多個服務器上。 MEMORY存儲引擎僅限於單個主機,並受到該主機的CPU和內存的限制。
- 快速訪問個別條目。 MEMORY存儲引擎僅具有表級鎖定功能,因此併發性受到影響。
- 非關係密鑰/值存儲。 MEMORY存儲引擎更加結構化,這對於緩存類型的使用並不有用。此外,MEMORY將varchar展開爲全長,因此存儲效率較低。
作爲一種緩存解決方案,我不會選擇MySQL MEMORY存儲引擎。由於您使用的是PHP,因此您應該使用APC或Xcache等。這些數據緩存功能更適合PHP中的典型用法。
如果您不使用其中一種PHP緩存技術,那麼這是一個比擔心memcached與MEMORY存儲引擎更加重要的改進領域。
我同意比爾,你不會像使用MySQL那樣獲得相同的性能提升。
打趣:
確保主機啓用內存存儲引擎。
SHOW ENGINES;
這將顯示你的mysql實例中安裝的所有存儲引擎的列表和狀態。
Memcache允許您存儲任意長度的數據。在內部,它會檢查數據以查看它的存在時間,並將其放入預先分配的存儲桶中,該存儲桶與您存儲的物料的大小最接近。這部分邏輯,你需要實現自己。 MySQL的內存存儲引擎只接受固定長度的行。爲了在mysql中獲得類似的效果,你需要在內存表中創建幾個不同長度的字段來存儲數據。 http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
選擇與您的所有「桶」之間的聯合表會產生正確的值,而不論其表的關鍵是實際存儲英寸
一個mysql的疑難雜症,如果你存儲在一個字段數據比字段長(例如16字符字段中的18個字符),mysql將會截斷它而不會出現任何錯誤。
下面是一個更好的主意:使用Zend_Cache與'文件'後端。 這將在web服務器本地磁盤上存儲與memcache類似的東西。 連接到共享主機上的數據庫通常很昂貴。 (在我的godaddy帳戶上進行第一次連接時需要1到2秒)。即使是慢速磁盤也比這更快。 http://framework.zend.com/manual/en/zend.cache.html
謝謝,txyoji。 – lovespring 2009-09-01 03:22:31
- 1. Php(MySQL + MemCached)的數據庫類
- 2. PHP和MySQL:數據庫內不打印
- 3. 優化:memcached vs mysql內存
- 4. PHP和MySQL在數據庫中存儲
- 5. 使用MySQL和PHP將數據存儲在MySQL數據庫中
- 6. PHP和Mysql數據庫
- 7. MySQL和PHP數據庫
- 8. MySQL數據庫和PHP
- 9. 存儲API請求數據庫vs memcached
- 10. Memcached和虛擬內存
- 11. PHP/MYSQL使用數據庫和PHP
- 12. php mySQL回聲數據庫內容與php和html代碼
- 13. MySQL內存表,Memcached或其他?
- 14. PHP - Memcached的:MySQL的資源緩存
- 15. PHP underfined變量 - MySQL數據庫內表
- 16. PHP,Mysql,在數據庫內搜索
- 17. 如何使用PHP和MySQL在MySQL數據庫中存儲數組數據?
- 18. 訪問MySQL數據庫和PHP和Android
- 19. MySQL是內存數據庫嗎?
- 20. 在mysql數據庫中存儲php datetime
- 21. PHP MySQL:將PDF保存到數據庫
- 22. PHP/MySQL的:保存值數據庫
- 23. PHP更換存儲在MySQL數據庫
- 24. 保存Php變量到mysql數據庫
- 25. PHP,MySQL,數據庫
- 26. Memcached與PHP中的內部緩存?
- 27. Memcached內存泄漏
- 28. 如何使用memcached與PHP和MYSQL
- 29. Memcached數據庫存儲數據在哪裏?
- 30. Twilio函數 - 內存和數據庫
好建議Bill +1 – 2009-08-29 06:05:48
謝謝比爾,我學到了很多。 – lovespring 2009-09-01 03:22:00