我通過開發一個Web應用程序約70%的方式,其中包含本質上大約50,000行的大數據。什麼是最適合此應用程序的數據庫緩存?
該應用程序本身是一個過濾應用程序,提供過濾此表的各種不同方式,例如按數字範圍過濾,拖放過濾,最終執行正則表達式過濾,實時文本搜索以及我可以繼續。
由於這個原因,我以模塊化的方式對我的MySQL查詢進行了編碼,以便實際查詢本身根據過濾類型進行動態組合。
目前,每個過濾操作(總共)平均需要250-350ms。例如: -
用戶抓住可視滑塊的一端,向內拖動,當他/她放開時,範圍過濾查詢由我的PHP代碼動態放在一起,結果作爲JSON響應返回。用戶放開滑塊直到用戶收到所有數據並重新繪製表格的總時間平均在250-350毫秒之間。
由於用戶可以在短時間內執行大量篩選操作以檢索他們正在查找的數據,因此我非常關注可擴展性。
我已經試圖用memcached做一些奇特的緩存過期工作,但無法讓它與我的動態生成的查詢正確地玩球。儘管所有內容都可以正確緩存,但是當查詢更改並保持數據相關時,我無法在緩存中過期。然而,我對memcached極其缺乏經驗。我的第一次嘗試讓我相信,memcached並不是這項工作的正確工具(由於查詢的高度動態性,儘管這個應用程序最終可以看到非常高的併發使用率。我的問題是,有沒有緩存機制/層,我可以添加到這種應用程序,可以減少在服務器上的點擊量?記住動態查詢。
或...如果memcached是最好的工具對於這份工作,我錯過了早期嘗試的一部分難題,能否提供一些關於如何使用memcached的信息或指導?
巨大的感謝所有誰res池塘。
編輯:我應該提到的是數據庫是MySQL。 siite本身使用nginx代理在Apache上運行。但是這個問題純粹與加速和減少數據庫命中有關,其中有很多。
我還應該補充說,250-350ms的往返時間是完全遙遠的。就像從遠程計算機訪問網站一樣。時間包括DNS查找,數據檢索等。
這裏有一些很好的簡單方法,我本可以把答案給予任何人,但是你的回答激發了我放下自己的驕傲,更努力地設計我的實際數據庫和查詢。謝謝。 – gordyr