2010-11-03 166 views
1

我有一個InnoDB表,不斷刷新一組新的數據。MYSQL InnoDB快速刪除?

所以,我做了從表(一切)刪除,然後插入新的數據集。
但是,表不能沒有數據集,所以我在交易中做上述事情。

一切都很美妙,但刪除速度變得越來越慢。

有沒有人知道非DDL方式加速刪除?

回答

2

不知創建第二個表「nextdataset」,然後重命名它將工作,我從來沒有試過這個。 http://dev.mysql.com/doc/refman/5.0/en/rename-table.html

+0

丟棄舊錶會提交我的事務,並且在完成重命名之前將數據庫的完整性保持可疑。 但我正在考慮使用這個,因爲我認爲重命名會非常快......不要以爲我曾經測試過重命名。 – 2010-11-03 13:41:38

+0

嗯,有道理。可惜 – Jaydee 2010-11-03 13:44:58

+0

啊,我看你可以原子地重命名多個表:) 我想我可以做這個工作。 – 2010-11-03 13:48:38

1

你能說些關於桌子的更多內容嗎? (?例如約束上,外鍵等)

沒有任何信息,我建議

TRUNCATE 

這裏的文檔:Mysql-Truncate

+0

它是一個普通的老式簡易表,只有1個非唯一索引。 正如在上述帖子的評論中提到的那樣,truncate會在一半的時間內提交交易。 – 2010-11-03 13:42:35

1

使用TRUNCATE TABLEMySQL manual

+0

+1!這可能是最快的方法,因爲不需要選擇和刪除。 – jwueller 2010-11-03 13:34:19

+0

但是TRUNCATEs交易安全嗎? – nickf 2010-11-03 13:36:14

+0

截斷是ddl。他們刪除並重新創建表......並隱式提交,這對我來說並不合適。 – 2010-11-03 13:38:31

0

運行命令\ G SHOW INNODB STATUS在您的mysql監視器中刪除或截斷進程操作時。 MyIsam表比InnoDB快得多,但是沒有回滾是可能的。