2010-01-19 46 views
0

我對數據庫性能有一些疑問。我使用Sqlite,但我認爲性能評論適用於所有關係數據庫?數據庫設計和性能

我有一個數據庫,其中包含一個表,其中存儲約200個變量的數據。我每秒鐘向表格寫入大約50個變量。一個寫變量包含變量的ID,一個值和一個時間戳。 Readig很少完成,但需要儘可能快地按時間順序獲取每個變量的數據。當我做查詢時,我總是需要獲取1個變量的數據。

如何設計數據庫,使讀數儘可能快: 1.我製作了一個包含所有 變量的表格。該變量存儲爲 的ID。我索引表上的ID 和時間戳。不好的部分是 該索引使寫緩慢(r)。 2.我爲每個變量 製作200個表並索引時間戳。

我認爲第二個解決方案是最高效的,但是爲每個變量添加一個表似乎並不正確。有人可以給我一些建議嗎?

謝謝

回答

1

如果您確實想使用數據庫,請使用第一種方法,但請確保您將數據插入到單個事務中;基準測試表明它使寫入速度更快。 您的搜索是否僅對變量名稱/ ID和時間戳或變量名執行。索引時間戳可能不是必要的...

1

您確定您需要一個數據庫嗎?通過它的聲音,一個平面文件對你來說可以工作得很好,而你聽起來並不像你實際上需要任何數據庫的任何陷印。只需爲每個變量創建一個平面文件,併爲每個變量保留句柄。儘可能多地通過標準緩衝IO寫入它們。要閱讀,只需打開一個文件並反序列化即可。

1

如果您正在使用關係數據庫,我猜這些變量都是相關的?如果他們只是價值觀,例如設置,那麼也許文件或類似的東西可能會更好。如果你只需要查詢一個變量的值,那麼,如果你堅持使用數據庫(這可能不是一件壞事!),那麼你應該爲每個變量創建一個表: id(unsigned int ,自動遞增,主鍵) 時間戳(日期時間) 變量(不管它應該是)

不要在數據吝嗇,只是因爲「它可能需要在硬盤上更多的空間」 - 這隻會導致麻煩。