我正在開發一個Grails應用程序來替換已運行多年的桌面數據庫應用程序(事實上自1991年以來以各種形式)。有一張銷售表,其中包含銷售可追溯到25年。然而,大部分時間我感興趣的只是一組仍然活躍的銷售,可能還有一個月左右的時間。我不希望搜索等被大量的舊數據拖累。但是,我確實需要訪問某些地方的舊數據以進行存檔搜索。Grails和MySQL分區
解決這個問題的一個顯而易見的方法是建立一個單獨的域類,比如說ArchivedSale,它具有與Sale相同的屬性,一旦銷售不再活躍(數據已發佈到賬戶中)從中創建一個ArchivedSale並刪除原件。不過,這確實讓我感到不習慣重複自己的原則 - 我不得不在兩個地方做任何領域類的改變,這不是一個好主意。
但是,如果我使用MySQL分區,也許我不需要關心自己的性能。我可以將所有銷售日期設定爲2015年和更早的日期,並將其他日期設置在另一個分區中,這樣可以很好地解決任何性能問題。儘管如此,我從來沒有使用過分區,並且對它進行了閱讀。我有點擔心,因爲主分區似乎需要在分區標準中使用,並且我知道我無法真正玩弄MySQL主鍵,因爲它們對於Grails的工作方式至關重要。
我想知道有沒有人做過與Grails類似的任何事情,並且可以給我一些提示?或者,如果沒有這個,是否有另一個解決我可能忽略的問題的好方法?
如果沒有適當的指標可用,並且正在使用,而SQL已被調整,那麼MySQL分區可提高某些查詢的性能,在某些非常特殊的情況。 (這些查詢必須特別用*謂詞書寫,這些謂詞允許MySQL優化器進行「分區修剪」)。但是,在分區真正發揮作用的地方是管理大量數據,極大地提高了某些操作的效率(例如清空整個分區),並提供更多可管理的設置。分區本身並不是改善性能的靈丹妙藥。 – spencer7593
另一種可能性是有兩個數據源,一個一旦設置就不會被操縱,另一個可以保持清理最新信息。仔細地做它來管理你如何管理它,但這意味着你寫交易一次到兩個分貝。這是答案不要重複自己 – Vahid
是否有可能爲同一個域類使用兩個數據源? –