2012-12-19 11 views
6

ibdata dosyasına baktım ve 128 GB idi. Her tablonun boyutunu çıkardım ve bir tablo 5 Milyon kayıt yapıyordu ve 90 GB gösteriyordu.ibdata1 dosyası nasıl temizlenir ve performansı nasıl etkileyebilir?

Gerekli olmadığı için bu tabloyu kestim ve ibdata1 boyutunu gördüm. Hala 128 GB gösteriyor. Sonra her bir tablonun boyutlarını çıkardım ve toplamı sadece 35-38 GB.

nasıl Db sunucuda alan 90 GB geri alabilirsiniz. Ben kırmızı şapka Linux sunucusunda php ile mysql kullanıyorum.

Eğer DB'deki herhangi bir şeyi silersek, sadece çoğaltma işlemini kaldırır, ancak kendisine ayrılan alanı el ile yapana kadar ayrılmamalıyız. Yol bu mu. Uzay senin ibdata dosyası tarafından tüketilen sonra

+1

http://stackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysql. Tek kelimeyle: yapamazsın. Tüm veritabanlarına dökün, sunucuyu durdurun, ibdata dosyalarını silin, yeniden başlatın, dökümü yeniden yükleyin. – RandomSeed

+1

Yakın zaman [ 'innodb_file_per_table'] (http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html) seçeneği. Büyük tabloları bırakmak, o zaman alanı geri kazanmanızı sağlayacaktır. – gertvdijk

+0

Sağlanan @YaK bağlantısını ziyaret etmenizi tavsiye ederiz. Kesinlikle bir kopyası ve bağlantı kurduğu gönderi adım adım talimatları içerir. – Tass

cevap

5

asla gitmez. Veri dosyasını 'kırpmak' tek yolu dbs'nizi boşaltmak, hepsini bırakmak, ibdata dosyasını silmek, mysql'i yeniden başlatmak ve dökümü yeniden yüklemektir.

Sık sık tüm tabloları bırakırsanız, tablo başına bir veri dosyası kullanmak için innodb yapılandırabilirsiniz. Bu durumda, bir tabloyu kapattığınızda, tabloya özel ibdata dosyasını silebilirsiniz.

+0

Tüm tablolarımı silip DB'yi ve ibdatafile'ı silersem, –

+0

@NaanuManu çöpünü yeniden yüklerseniz otomatik olarak oluşturulur, yalnızca tam dökümünüz olduğundan emin olun. Sildikten sonra tüm innodb verileri kaybolur. – Ray