2011-10-07 35 views
0

一點點背景 - 我們有一個表「訂單」,每天有大約10k條記錄寫入它。這是數據庫中查詢最多的表格。爲了使表格變小,我們計劃將大約一週前寫入其中的記錄移動到另一個表格中。這將通過一項自動化工作完成。雖然我們知道將歷史記錄彈出到單獨的服務器是有意義的,但我們現在只有一個數據庫服務器。mysql多表/多模式性能

訂單表位於databaseA中。以下是我們正在考慮的方法:

  1. 創建一個新模式databaseB並創建一個包含歷史記錄的訂單表?
  2. 在databaseA中創建一個表ordershistory。

如果我們能指出哪個設計會給出更好的性能,那將會很棒。

編輯:

更好的性能

  1. 查詢當前訂單 - 因爲它不是由過去的數據
  2. 查詢歷史
+1

更好的表現爲什麼?遷移數據,或稍後查詢或其他內容? – Kenny

+1

10k行不應該是性能問題的原因 – michael667

回答

1

我把它從你的拖累問題是你只想處理當前的訂單。

在過去,對繁忙的站點使用的3臺

新訂單, 加工訂單, 填訂單,

和主訂單表

訂單

所有這些表與訂單表和主鍵有關係。使用左

如new_orders_id,orders_id processing_orders_id,orders_id ....

加入到尋找新的訂單處理應該是比較有效的

2

您既可以:

  • 有一個單獨的檔案表,可能在其他數據庫中。這可能會編譯查詢。
  • 使用partitioning

我不確定MySQL分區的效果如何。對於替代品,您可以查看PostgreSQL partitioning。大多數商業數據庫也支持它。