2012-04-28 62 views
1

在某些情況下,我們使用MySQL按日期進行分區來存儲數據,保留X天的信息,並且每天自動進程創建分區並丟棄舊分區(介意沒有歸檔正在完成這裏只是下降)。數據還通過一些散列子分區成40個分區,以進一步優化訪問。MySQL分區丟失需要時間

雖然每天的「改變表降分」查詢運行的DB遭受顯着的性能下降和應用中繼這個DB展品丟棄連接,

我們正在運行MySQL 5.5提供每秒等較少的請求。 17與InnoDB的這個特定的應用程序和每個這些分區被刪除有幾百萬條記錄(可能超過1000萬)。每個分區的大小平均爲4.5GB。

我在分區丟棄時沒有在該盒子上看到任何密集的IO,所以我只能假設它與此無關。然而,CPU負載平均值從0.5的正常值到一天中的這個時間上升到8-10左右。這持續了幾分鐘。

是不是分區下降應該是一個簡單的邏輯下降?是否有可能我們做錯了什麼,或者我們可以以某種方式調整它,或者這是可以預料的。

乾杯

回答

0

我意識到這是一個老問題,但它是沒有答案,所以我會試一試。

如果您的文件系統是ext3,刪除該文件可能需要一些時間。 XFS和ext4將更快

從MySQL的角度來看,你可以做的一個技巧是創建一個到分區文件的硬鏈接(而不是符號鏈接)。然後,DROP PARTITION將簡單地遞減文件上的引用計數,這幾乎是即時的。你可以讓他們刪除你對該文件的鏈接。這仍然需要一些時間,但MySQL不會看到它。