2015-06-04 15 views

cevap

83

Bu gerçekten bilgilendirme mesajıdır.

Benzer şekilde, bir InnoDB tablosunda OPTIMIZE yapıyorsunuz (MyISAM depolama altyapısı yerine InnoDB depolama altyapısını kullanan tablo).

InnoDB, MyISAM'ın yaptığı gibi OPTIMIZE özelliğini desteklemez. Farklı bir şey yapar. Boş bir tablo oluşturur ve tüm satırları varolan tablonun içine kopyalar ve esas olarak eski tabloyu siler ve yeni tabloyu yeniden adlandırır ve daha sonra istatistikleri toplamak için ANALYZE çalıştırır. InnoDB'nin bir OPTIMIZE yapabilmesi en yakın olandır.

"Ben (...

Tablo diyerek InnoDB depolama motoru optimize desteklemez:

Eğer alıyorsanız mesajı temelde InnoDB depolama motoru MySQL sunucusunu söylediklerini tekrarlıyorum MySQL sunucusu InnoDB depolama motoru) arkadaşım (MyISAM depolama motoru) gibi bir OPTIMIZE işlemi yapmaz.

"Ben eşdeğer bir sonuç elde edecek operasyonların farklı set gerçekleştirmeye karar verdik." ... diyerek InnoDB depolama motorudur "yerine analiz + yeniden yapıyor"

+2

Tamam silin. –

+0

Bunun bir yerde MySQL Referans Kılavuzunda bulunduğundan eminim; Bu beklenen davranış ve endişelenecek bir şey değil. (Tablonun "kilitli" olması ve işlem tamamlanana kadar kullanılamayacağı dışında HUGH JASS tablosu için bir süre geçebilir.) Referans: [https://dev.mysql.com/doc/refman/5.5 /en/optimize-table.html](https://dev.mysql.com/doc/refman/5.5/en/optimize-table.html) "InnoDB ayrıntıları" bölümüne bakın. – spencer7593

+0

Tablo optimizasyonunu gerçekleştirmek için MySQL Workbench'i de kullanabilirsiniz. [Şema ve Tablo Denetçisi dokümantasyonuna bakın] (https://dev.mysql.com/doc/workbench/en/wb-develop-object-management-inspector.html#wb-develop-object-management-schema-inspector) Ek bilgi için. "Optimize Tablosu" seçeneğine dikkat edin. –

10

OPTIMIZE TABLE resmi destek makaleye göre InnoDB'nin motoru ile çalışıyor: http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

Sen tablo yapısını ve güncelleme endeksi istatistiklerini (ALTER TABLE gibi bir şey) yeniden inşa edecek o optimize InnoDB'nin tabloları göreceksiniz.

Bu iletinin yalnızca bilgi amaçlı olabileceğini ve çok önemli bilgilerin sorgunuzun durumu olabileceğini unutmayın: sadece Tamam!

mysql> OPTIMIZE TABLE foo; 
+----------+----------+----------+-------------------------------------------------------------------+ 
| Table | Op  | Msg_type | Msg_text               | 
+----------+----------+----------+-------------------------------------------------------------------+ 
| test.foo | optimize | note  | Table does not support optimize, doing recreate + analyze instead | 
| test.foo | optimize | status | OK                | 
+----------+----------+----------+-------------------------------------------------------------------+ 
0

daha iyi bir seçenek, yeni bir tablo hedef tabloya satır kopyalamak oluşturmak fiili Tablo bırakma ve yeni oluşturulan tabloyu yeniden adlandırmak olduğunu. Bu yöntem

+1

Cevabınızla birlikte gitmek için örnek kodu bir araya getirmenizi öneriyorum. [Nasıl iyi bir cevap yazabilirim?] (Http://stackoverflow.com/help/how-to-answer) – Frits

1

iyi seçenek aynı özelliklere

CREATE TABLE <NEW.NAME.TABLE> LIKE <TABLE.CRASHED>; 
INSERT INTO <NEW.NAME.TABLE> SELECT * FROM <TABLE.CRASHED>; 

yeniden adlandır NEW.NAME.TABLE ve TABLO

ile yeni bir tablo oluşturmak olduğunu küçük tablolar için iyidir.CRASH

RENAME TABLE <TABLE.CRASHED> TO <TABLE.CRASHED.BACKUP>; 
RENAME TABLE <NEW.NAME.TABLE> TO <TABLE.CRASHED>; 

iyi çalışmadan sonra, size yapıyoruz farklı şekilde paylaşmak misiniz,

DROP TABLE <TABLE.CRASHED.BACKUP>; 
+0

'a bir göz atın, bunu başka birçok durum için kullanabilirim. –