2017-03-31 43 views
0

首先讓我試着描述一下我的問題。 客戶端正在使用一年的應用程序,並將約7千萬條記錄存儲到mysql數據庫中。他的計劃是繼續在這個應用程序上繼續工作,但隨着這些數據量的減少。MySQL:數據量很大

當然,問題是什麼將在明年happend,二,五......

這是相當的地方〜數據的98%被儲存在一個單獨的關係表中的特定情況下(這是間鏈接2張桌子)。

在這種情況下,什麼是「最佳」解決方案? 最好包括安全,設計良好,最合理的解決方案,使應用程序可以長時間使用並防止出現這種情況。

我的密碼:將當前表保存爲歷史記錄表並創建一個新記錄,可以保存最近3個月的記錄,並在記錄變老時執行一些操作?

尊重!

+1

這就是我們爲一些巨大的桌子所做的事情。 – Barmar

+0

也看看分區表和MERGE引擎。 – Barmar

+1

你好,歡迎來到StackOverflow。只是通讀你的問題,我想知道你在「這種情況下最好的解決方案是什麼?」的問題中如何定義「最佳」?產生基於意見的答案的問題在這裏不受歡迎。你能否以一種可衡量的方式(或多種方式)來定義什麼最好的方法? –

回答

0

對於許多映射表,使用這裏描述的技巧:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table。這會在許多情況下提高性能。

請提供SHOW CREATE TABLESELECTs正在放緩。

如果大部分數據都在「鏈接」表中,那麼查詢與CROSS JOIN有什麼不同?

分區很少提高性能。再次,需要查看查詢。 MERGE是基於MyISAM的pre-PARTITION kludge。不要使用它。

歷史表?請問查詢「最新」的東西?再次,需要查看模式和查詢。