2013-02-11 44 views
1

我有一個關於設置我的表來處理我每天導入的大量數據的最佳方法的一般問題。 我將每天導入10個包含1000條記錄的csv文件,以便此錶快速擴展。大量數據導入的表結構

它由15列組成,從小到中等整數到30個字符的變化。

沒有ID字段 - 我可以加入6列,以形成一個主鍵 - 這將是一個變種焦炭總長度約45

當它的進口我需要通過一個Web前端該數據報告以摘要級別結束,因此我看到自己必須在導入後從此生成報表。

在這個數據中有很多領域在每一天的進口 - 日期,地區,客戶等重複自己,每天只有一半列是特定於記錄。

問題:

  1. 我應該導入所有到一個表作爲立即轉儲表。
  2. 我應該通過導入過程轉換數據和拆分到不同的表進口
  3. 我應該形成基於列的id字段我可以進口
  4. 我應該使用自動INC期間獲得一個唯一的密鑰id字段爲此。
  5. 這應該是什麼樣的表的InnoDB等

我擔心的是在這個表上,這將使提取到報告表難當,因爲它建立數據超載?

建議真的很有幫助。謝謝。

回答

1
  1. 有AUTOINC ID通常比沒有它
  2. 爲了確保數據的完整性更有幫助,你可以在你的6列構成ID有uniq的指數
  3. MySQL是數以百萬計的記錄在數據庫中很舒服如果你有足夠的內存
  4. 如果你仍然有數百萬條記錄的恐懼 - 只是每月將你的數據彙總到另一個表中。如果你不能 - 添加更多的RAM。
  5. 儘可能在導入過程中儘可能多地轉換數據,只要不影響性能即可。當數據已經被導入時轉換數據會給MySQL服務器增加不必要的負載,如果可以避免這樣做 - 避免。
  6. MyISAM通常更適合統計類型的數據,這種類型的數據不會經常更新,但InnoDB在過去幾年中已經發現了(看看percona的XtraDB引擎),並且性能基本相同 - 明智的。

我認爲這裏最重要的一點是定義您的數據保留率 - 很少有您必須在一兩年後保留每日解決方案。

如果您認爲將來可能仍需要日常分辨率,則會聚合到較低分辨率的幀和存檔(mysqldump> bzip非常高效)。

+0

感謝 - 好點 - 我想我會發現很難在導入時添加id,這是主要問題。我看不出我該如何在邏輯上分解csv數據,並且能夠將生成的id用作表中的外鍵,我也在轉換過程中添加了這些外鍵。 我認爲你肯定是歸檔的東西。 – user1479891 2013-02-11 10:00:13