2010-11-28 104 views
2

我想在MySQL中創建一個數據庫表來存儲我的產品統計數據。幾乎每一天的統計數據都應該在數據庫中。問題在於速度。在MySQL中存儲大量數據?

目前我儲存,每個產品,這些值: 時間,售出一件商品,PRODUCT_ID,HIT,OTHER_ID

我認爲兩種不同的方式來存儲DATAS:

  • 一天一天在一排(連載)
  • 歲歲每個產品在一排(連載)

或你的想法每個產品?

速度測試,我沒有那麼差,差不多好。但你對這個問題有更好的想法或經驗?

+0

多少數據,例如多少行?你能否以批處理模式加載(可以更快)還是需要實時查詢?你將對數據運行什麼類型的查詢? – 2010-11-28 16:13:23

+0

這是什麼目的?最後,你想用數據做什麼?雙?數據挖掘?只是顯示他們...? – Spredzy 2010-11-28 16:14:52

回答

6

確實取決於您的報告需求 - 即,如果您只按產品/日報告,那麼將事務統計信息作爲批處理過程的一部分滾動到彙總表中是有意義的。在任何情況下,我建議將您的交易數據和您的報告數據分隔到一個單獨的數據庫中,這樣您可以優化用於寫入的事務數據,並優化報告數據庫的讀取操作(並且不需要大型報告粉碎你的交易處理能力)。

1

我假設你只在靜態數據庫中使用該數據庫,而且它的交易存儲在第一位的數據庫不同。可發生

速度問題:

  • 當您將數據插入到數據庫
  • 當你(從Web應用程序即)查詢數據庫

有你的數據庫專用統計它有理由開始設計你想要製作的報告;這樣你可以定義:

  • 你要插入到數據庫
  • 你要對數據庫執行

勾畫出在Excel報表中的查詢數據(但你可以真正使用任何工具)並用假數據填充報告是瞭解你想實現什麼的一個好想法。

當你高興與因此你可以找出你需要擠進數據庫中的數據,你必須實現查詢,並與你想給你的用戶,如果報告中的作用任何。

如何使用數據

  1. 在第一個地方填寫你的數據庫,你可能有一個大的和詳細的大寫金額的數據,如描述購買一排。開始查找尺寸,這些尺寸在您的報告中實際上很有用;一個尺寸是你所關心的尺度,就像你賣什麼,誰是原來賣了它。
  2. 對於每個維度,找到您想要在報告中使用的最小細節級別:您是關心購買的小時數還是僅僅是一年?你關心銷售產品的類別還是隻關注其SKU?

這會告訴你你必須從原始數據庫轉移到統計數據的數據。

如何讓您的數據是最新的

這在很大程度上取決於你想如何頻繁的統計數據進行更新。您可以設置一個觸發器,實時更新您的統計數據庫或定期運行腳本以升級您的統計數據庫。

注意

  1. 每當原始數據庫在其架構更改,或者更加微妙的是存儲數據的方式,你必須在考慮如何在您的更新程序(觸發這些變化的影響或外部腳本)
  2. 如果你的統計信息有一定的交互性(例如,來自Web應用程序),我建議使用Data Cubes來定義你的統計數據庫。
  3. 請記住,您無法輕鬆地對序列化數據進行排序,選擇或分組。
1

解決這個問題作爲一個數據倉庫/數據集市解決方案(星型/雪花架構)與彙總(彙總/物化視圖),如表來減少複雜的長時間運行的查詢更快簡單的SELECT語句。

建議批量加載數據到一個臨時(臨時)模式,清洗,驗證和填充你的事實和維度表:)之前它映射