2012-03-13 72 views
1

我有一個程序,從某個來源每秒接收約20個任意測量。每個度量都有一個類型,時間戳,最小值,平均值和最大值。然後我需要創建每個度量類型的X個聚合。mysql硬盤的效率與數百萬行

該程序可以同時設置100個源代碼,這會產生大量需要快速存儲和快速檢索的數據。

這將運行的系統沒有內存/存儲/ CPU的限制,但是在那裏有另一項服務在寫入到硬盤的能力幾乎達到極限。對於這個問題,我們假設這是一個「頂級」硬盤,我將無法升級到硬盤。

我現在正在做的是根據每個測量類型(20x源)生成一個表格,並根據每個測量的時間戳值進行分區,作爲遇到新的測量類型。我這樣做是爲了避免在HDD上分割測量數據,這將使我能夠以最少的「尋找」來插入或查詢數據。

這是否有意義?我不需要做任何連接或複雜的查詢,它可以是直接的批量插入或按時間戳範圍的單個測量類型查詢。

MySql如何將數據存儲在硬盤中的表中?如何在插入&查詢期間更好地設計數據庫以最大限度地減少硬盤查找?

回答

0

您提出的一般問題可以通過閱讀文檔或瀏覽知識庫文章,通過使用谷歌或您喜歡的任何搜索引擎來發現。如果您使用MyISAM引擎(默認情況下),那麼每個表都作爲三個文件存儲在一個特定於數據庫的目錄中,其中大數據爲行數據的MYD文件和所有索引的MYI文件。

您可以做的最重要的事情是讓您的配置參數正確,以便優化訪問和緩存。 MySQL會做得比你實際期望的要好。有關更多信息,請參見http://dev.mysql.com/doc/refman/5.1/en/option-files.html,並比較您將在本節討論的系統上找到的my-small.cnf和my-large.cnf的設置。