2014-02-21 74 views
0

關於MySQL和優化過大表問題。 MySQL服務器運行在有限容量的服務器上,我們需要儘可能優化它。對於大表優化的MySQL

我們以每秒一次測量的速率對數據進行採樣,並使用它在Web應用程序上繪製圖形。

目前,所有這些數據分別是一個表中,我們結束了數以百萬計的數據點。

我們有幾個數據源,它們都有兩個ID:一個用於位置,一個用於源自身。我們同時使用兩個id來擁有唯一的id,並且我們不使用MySQL id來減小數據的大小。我們使用posix plus兩個id作爲表主鍵,並使用它們來查詢數據庫。這些ID不是由SQL生成的。

通常我們在繪製時間段和幾個源使用約400點圖。

問題: 這種設計的最佳優化是什麼?

第一個問題:將所有數據保存在單個表中還是將它們拆分成多個表更好?這樣做會使代碼複雜化,因爲我們擁有動態表。

如果最好將它們保存在一張表中,那麼使用基於ID和POSIX的主鍵是否正確?

是否有這樣的目的,一些具體的MySQL優化?

感謝

回答

0

如果我深知,對於這種情況最好的優化將是具有distributed database。更具體地說,我會將horizontal partitioning method應用於您提到的此表。

粗略地說,這是一種根據一些特定標準將表格分成片段的方法,以便您的查詢不必一次處理大量數據。您可以使用它僅處理某些特定查詢的相關數據,或者甚至使用並行處理來處理所有數據。

請允許我不要進一步解釋,因爲我不確定這是否正是您想要和需要的,也是因爲您可能會按照自己的步調更好地閱讀此問題。不過,希望通過給你一個出發點來幫助你。

+0

從你簡短的說明,我會說這似乎按時間或源完全適合我們的需求,分片是否。我會進一步閱讀它。 – Damien

+0

事實上,時間戳上的碎片將查詢數提高了8倍。 – Damien

+0

輝煌!很高興我能幫忙! – lucasnadalutti