讓memcached和mysql更好的工作

來源:互聯網
上載者:User

這次是Fotolog的經驗,傳說中比Flickr更大的網站,Fotolog在21台伺服器上部署了51個memcached執行個體,總計有254G緩衝空間可用,緩衝了多達175G的內容,這個數量比很多網站的資料庫都要大的多,原文是A Bunch of Great Strategies for Using Memcached and MySQL Better Together,我這裡還是選擇性的翻譯以及按照我的理解補充,感謝Todd Hoff,總能給我們一些學習的案例,從這裡也能看出國外技術的開放態度,不似我們,其實就那麼點小九九還藏著掖著,好了,進入正題。

一、關於memcached

還不知道這個?那你去面試的時候要吃虧了,趕緊去官方網站看一下http://www.danga.com/memcached/,另外google一下用法,硬碟總是太慢,把資料存在記憶體裡面吧,如果你只有一台伺服器,推薦用一下APC(Facebook在用)或者eaccelerator或者Xcache(國人開發的),這些產品單機效果更好,如果你需要分布式的緩衝方案,那麼用memcached吧。

二、memcached如何與mysql並肩作戰?

通過資料庫分區來解決資料庫寫擴充的問題把資料庫分區,部署到不同的伺服器上,免得只有一個主伺服器,寫操作成為瓶頸以及可能有的“單點故障”,一般的資料庫分區主要是按照業務來分,儘可能的拆分業務,不相干的都獨立起來做成服務也好

前 端mysql和一堆memcached伺服器來應付讀的問題應用程式首先從memcached中擷取資料,擷取不到再從資料庫中獲得並儲存在 memcached中,以前看過一篇文章說好的應用95%的資料從memcache的中獲得,3%的資料從mysql的query cache中獲得,剩下2%才去查表,對比一下你的應用,差距有多遠?

通過mysql複製(master-slave)來解決讀的問題

首先mysql資料庫通過master-slave讀寫分離,多個slave來應對應用程式讀的操作。

三、為什麼不用mysql的query cache?

我們都知道mysql有個query cache,可以緩衝上次查詢的結果,可實際上幫不上太多的忙,下面是mysql quety cache的不足:

只能有一個執行個體

意味著你能儲存內容的上限就是你伺服器的可用記憶體,一台伺服器能有多少記憶體?你又能存多少呢?

只要有寫操作,mysql的query cache就失效

只要資料庫內容稍有改變,那怕改變的是其他行,mysql的query cache也會失效

mysql的query cache只能快取資料庫資料行

意味著其他內容都不行,比如數組,比如對象,而memcached理論上可以緩衝任何內容,甚至檔案^_^

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.