2010-05-12 28 views
15

Bir tabloyu bir masaüstü tablosunda optimize etiğimde, bunun yerine bu iletiyi alırım. Bu, tablonun zaten optimize edilmiş olduğu anlamına mı geliyor, ama farklı bir şekilde mi?innodb tablosunu optimize edin

"tablo | en iyileştirme | not | Tablo optimize etmeyi desteklemiyor, bunun yerine yeniden oluştur + analiz et |

cevap

22
documentation itibaren

: InnoDB tabloları için

, OPTİMİZE TABLO kümelenmiş endeksinde endeks istatistiklerini ve ücretsiz kullanılmayan alanı güncellemek için tabloyu yeniden oluşturur, hangi TABLO DEĞİŞTİRME eşleştirilir. Bir InnoDB'nin masaya çalıştırdığınızda burada gösterildiği gibi MySQL 5.1.27 başlayarak, bu, OPTİMİZE TABLO çıktısında görüntülenir:

mysql> OPTIMIZE TABLE foo; 
+----------+----------+----------+----------------------------------------------------------- 
| Table | Op  | Msg_type | Msg_text              
+----------+----------+----------+-----------------------------------------------------------  
| test.foo | optimize | note  | Table does not support optimize, doing recreate + analyze ... 
| test.foo | optimize | status | OK                
+----------+----------+----------+----------------------------------------------------------- 
Sen ile mysqld başlatarak diğer depolama motorlarında OPTİMİZE TABLO uygulayabiliriz

--skip-new veya --safe modu seçeneği. Bu durumda, OPTIMIZE TABLE sadece ALTER TABLE ile eşleştirilir.

+2

Hiç geç olmamasından iyidir. :) –

3

tablo, bu gibi durumlarda kullanın OPTIMIZE TABLE

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE 
tbl_name [, tbl_name] ... 

olan tablonun tipine göre optimize için sözdizimi: Bir InnoDb işlemleri önemli ekleme, güncelleme yaptıktan sonra

  • veya silme innodb_file_per_table seçeneği etkin olduğundan, kendi .ibd dosyasına sahip tablo. Tablo ve dizinler yeniden düzenlenir ve disk alanı işletim sistemi tarafından kullanılmak üzere geri alınabilir.
  • MyISAM veya ARCHIVE tablosunun büyük bir bölümünü sildikten sonra veya değişken uzunluklu satırlarla (VARCHAR, VARBINARY, BLOB veya TEXT sütunları olan tablolarda) MyISAM veya ARCHIVE tablosunda birçok değişiklik yaptıktan sonra. Silinen satırlar bağlantılı bir listede tutulur ve sonraki INSERT işlemleri eski satır konumlarını yeniden kullanır. Kullanılmayan alanı geri almak ve veri dosyasını birleştirmek için OPTIMIZE TABLE'ı kullanabilirsiniz. Bir tablodaki kapsamlı değişikliklerden sonra, bu ifade, bazen önemli ölçüde tabloyu kullanan ifadelerin performansını artırabilir.