我在MySQL中有一個InnoDB表,它包含大約600k行。刪除400k +行後,我的猜測是我需要運行一個OPTIMIZE。運行表優化拷貝?
然而,由於該表將在操作過程中被鎖定,該網站將不會在那個時候使用。所以,我的問題是:我應該在實時數據庫表上運行優化(有少於200k行)?或者是否可以創建該表的副本,在該副本上運行OPTIMIZE,然後重命名這兩個表,以便將數據複製回實時表?
我在MySQL中有一個InnoDB表,它包含大約600k行。刪除400k +行後,我的猜測是我需要運行一個OPTIMIZE。運行表優化拷貝?
然而,由於該表將在操作過程中被鎖定,該網站將不會在那個時候使用。所以,我的問題是:我應該在實時數據庫表上運行優化(有少於200k行)?或者是否可以創建該表的副本,在該副本上運行OPTIMIZE,然後重命名這兩個表,以便將數據複製回實時表?
如果您創建一個副本,那麼應該已如果你CREATE TABLE..AS SELECT..
優化。無需單獨運行它
不過,我會考慮複製200K行保持到一個新表,然後重命名錶。 這種方式步驟少,周圍工作量少。
CREATE TABLE MyTableCopy AS
SELECT *
FROM myTable
WHERE (insert Keep condition here);
RENAME TABLE
myTable TO myTable_DeleteMelater,
MyTableCopy TO myTable;
工作完美!謝謝! – libeco 2011-12-28 11:33:55
200K行不算多,你應該做的相當快,但他說什麼@gbn是要走的路。 – 2011-12-28 10:55:31