2012-06-13 37 views
1

我有一個表中,我們有約2000萬條插入(盲插入沒有任何限制)每一天。我們有兩個外鍵,其中一個是具有約1000萬條目的表的參考ID。MySQL分區的表與巨大的插入和刪除

我打算刪除此表中所有超過一個月的數據,因爲此數據不再需要。但問題是,隨着大量的插入發生,如果我開始刪除,表將被鎖定,插入將被阻止。

我想知道我們是否可以在月表上使用基於月份的分區。這樣,我希望當我嘗試刪除所有超過2個月的數據時,這些數據應該位於不同的分區中,並且插入應該發生在另一個分區中,並且刪除鎖定不會阻止讀取鎖定。

請告訴我,如果這是可能的。我對使用數據庫相當陌生,所以請讓我知道我的想法是否有問題。

回答

1

MySQL documentation

對於的InnoDB和BDB表,MySQL使用的表鎖定僅當您 明確用LOCK TABLES鎖表。對於這些存儲引擎, 完全避免使用LOCK TABLES,因爲InnoDB使用自動的 行級鎖定,並且BDB使用頁面級鎖定來確保事務隔離 。

我不確定你是否有問題。你有沒有測試過這個問題,並看到了鎖定問題,或者你現在只是在理論化他們?

+0

我沒有實際驗證它,我認爲這可能是一個問題,並希望在繼續之前進行確認。我會驗證它並看一次。 謝謝。 – user1454332

0

MySQL從版本5.1開始分區。

您可以運行此查詢來驗證,如果你的MySQL版本支持分區:

SHOW VARIABLES LIKE 'have_partitioning'; 

然後你可以閱讀手冊,以瞭解如何使用它:

http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

+0

感謝您的回覆。 我也想知道在刪除時鎖定是在表級還是在分區級。我想刪除一個分區中的所有數據,同時插入其他分區,我想這樣做,而不會阻止插入。可能嗎? – user1454332