mysql 創建索引機制

mysql的機制和oracle不一樣,mysql 大部分ddl操作類似如下:

ALTER TABLE運行時會對原表進行臨時複製,在副本上進行更改,然後刪除原表,再對新表進行重命名。在執行ALTER TABLE時,其它用戶可以閱讀原表,但是對錶的更新和修改的操作將被延遲,直到新表生成爲止。新表生成後,這些更新和修改信息會自動轉移到新表上。

注意,如果您在執行ALTER TABLE時使用除了RENAME以外的選項,則MySQL會創建一個臨時表。即使數據並不需要進行復制(例如當您更改列的名稱時),MySQL也會這麼操作。對於MyISAM表,您可以通過把myisam_sort_buffer_size系統變量設置到一個較高的值,來加快重新創建索引(該操作是變更過程中速度最慢的一部分)的速度。

 

http://www.itpub.net/forum.php?mod=viewthread&action=printable&tid=1171134

 

-------------------------------------------------------

所以在創建索引時,會產生以‘#sql’ 開頭的文件,這文件佔的空間跟原來的表差不多,所以在有數據的表建索引,需要考慮空間是否足夠大

 

如果其中發現空間不夠,可以把‘#sql’開頭的文件刪掉,刪掉後還需要把之前創建索引的進程殺掉,否則,硬盤空間還是處於佔用狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章