2014-11-08 64 views
0

我想知道什麼是減少對數據庫的昂貴查詢的好方法。例如使用大量記錄,關節和計算的查詢。在一個單獨的數據庫表中存儲臨時結果

所以我想我會每20分鐘執行一次這些昂貴的查詢一次(或如此),並給用戶存儲結果從一個特殊的表中存儲這些昂貴的查詢結果。這是否是一種好方法,或者你會選擇一種用於存儲數據庫結果的平面文件緩存系統嗎?我讀過普通文件系統比較慢。

如果有人能夠啓發我這個問題,我會非常感激。

+1

你可以有一個memcache服務器,所以加載一次必要的查詢,將結果追加到memcache服務器,並根據需要檢索/ nuke ..這需要一個專業的網絡託管計劃或虛擬服務器,雖然 – 2014-11-08 14:13:27

+0

Ha Thx Daryl,恐怕我不能依靠memcache。它恐怕是一個共享主機。 :(對於這種情況的任何想法? – rinserepeat 2014-11-08 14:17:12

回答

1

您需要緩存數據,它只是一個地方的問題,並且也將基於數據集的大小。

Memcache as Daryl聲明是一個非常好的解決方案。取決於在後端訪問這些數據和框架的內容,它可以存儲在基於應用程序的緩存中,每隔x分鐘只發出一次查詢,同時使用緩存結果。

如果你想走直sql路線,你會採用數據倉庫的概念。
您將創建用於報告而不是基於事務的處理的拼合模式。 您將減少連接的數量並將數據非規範化到某種程度,以便查詢將快得多......但它將是特定時期的陳舊數據。

您可以設置服務/計劃任務/數據庫計劃任務來發出查詢,清除現有的拼合表,並用新結果重新填充它。

+0

感謝Keith!我想我會選擇數據庫路由。使用denormalize你幾乎可以創建一個臨時excelsheet,其中包含所有需要的數據,並留下設置數據庫的最佳實踐嗎? – rinserepeat 2014-11-08 19:13:53

+1

你可以把它想象成一個excel表格,但是非常依賴於這個場景,你可以優化你的數據倉庫以便讀取訪問,以用於報表和分析,而不是專注於消除冗餘。關於進一步的研究,你可以看看OLTP (交易)vs OLAP(倉庫)。一個很好的例子在這裏http://www.sql-server-performance.com/2013/from-oltp-to-olap/ – Keith 2014-11-09 12:47:20

+0

超級感謝隊友!!真的很感激它 – rinserepeat 2014-11-09 13:18:21

相關問題