İbdata dosyası için ne kadar büyük?


9

İbdata dosyam çok büyük, en azından bana çok büyük görünüyor. Bu aşırı mı yoksa o kadar da kötü değil mi?

-rw-rw---- 1 mysql mysql  15G Apr 18 10:11 ibdata1

4
İbdata dosyanız çok küçük.
Jeff Ferland

Bu dosyayı daha küçük parçalara (4G diyelim) bölmek performans için daha iyi mi yoksa daha mı kötü olur?
nachito

Yanıtlar:


13

Bu ne zaman bir sorun olabilir

show table statusBir tabloda çalışırsanız ve Data_freealan ibdata1dosyanızın boyutunun büyük çoğunluğunu oluşturuyorsa , boşa çok fazla alanınız olabilir. Çok fazla ekleme / silme sorunu yaratacaktır. Durum buysa ve geçici eklemeler ve silme işlemleri verilerinizin çoğunu oluşturuyorsa, tablo başına dosya için iyi bir durumunuz vardır.

Ancak bu otomatik bir "evet" değil. Dünyada InnoDB dosyalarının içindeki iç parçalanma hakkında çok fazla konuşma var, ancak bunları tablo başına dosya olarak bir dosya sistemine koymak, parçalanmanızı veritabanı düzeyi yerine dosya sistemi düzeyine taşıyor.

Bu neden genellikle sorun değil

InnoDB dosyanızı bir dosya yerine bir dosya sistemi olarak düşünün. Çok fazla dosyanız varsa, büyük bir dosya sistemine ihtiyacınız olacaktır.

Çoğunlukla, dosya sistemleri terabaytlarca veriyi ve anlatılmamış sayıda dosyayı işlemek için ölçeklendirme konusunda gerçekten başarılıdır. Bazen zayıf indeksleme ile ilgili sorunlarla karşılaşırlar (örneğin, bir performans etkisinden önce bir dizindeki dosya sayısını sınırlar), ancak modern dosya sistemi çoğunlukla terabayt aralığına iyi bir şekilde kayabilir.

InnoDB aynı şekilde çalışır. Veri dosyanızın boyutu çok büyük olabilir ... ve büyük dosya sistemleri gibi verilerinizi yedeklemeyle ilgili sorunlar da ortaya çıkabilir. Ancak, dosya sisteminizi birden çok bölüme ayırmak da bu soruna yardımcı olmuyorsa, innodb'u da değiştirmeye çalışmaz. İnnodb_file_per_table kullanabilirsiniz , ancak nadiren tavsiye ederim.

Dosya sisteminizde olduğu gibi, daha iyi yanıt dahili sınırları bilmek ve bu konuda çalışmaktır. Dizinleri anlayın ve uygun şekilde uygulayın. InnoDB'yi bölmeye çalışmak için çalışma, bunun için değil.

Kavramın yapıcı bir şekilde aktarılması için mücadele ettiğim için, bu kelimelerin benden daha iyi olduğunu hızlı bir şekilde okuyorum: Terabaytlar büyük veri değil, petabaytlar .

Müşterinin bazı terabaytlarla bir veri ambarı çalıştırdığı gerçekten eski bir MySQL pazarlama slaydını hatırlıyorum. Yıllar önce. InnoDB veya MyISAM, ikisi de işe yarar. Bu standart raf dışı MySQL şeyleridir.

15 GB'lık bir veritabanını terlemeyin.


Görünüşe göre% 50'nin biraz altındayım. InnoDB free: 7364608 kB
nachito

@nachito Kulağa iyi gelmeli. Dosya sistemi için geri alana ihtiyacınız olduğunu düşünüyorsanız, geri alın. Sadece performans konusunda endişeleniyorsanız, yapma. Ayrıca, performans için, veritabanı dosyalarınızı kendi bölümlerinde tutmak en iyisidir, bu nedenle performansa odaklanırsanız, yine de kullanılabilir bir geri ödeme görmezsiniz.
Jeff Ferland

6

ibdata dosyaları küçülmez - yakın zamanda bazı tabloları düşürdüyseniz veya çok sayıda satır kaldırdıysanız - config'inizdeki innodb, boş alanı dosya sistemine bırakmayacaktır. size öneririm:

  • mysqldump ile tüm verilerinizi yedekleyin
  • my.cnf innodb_file_per_table yönergesine ekle
  • mysql'yi yeniden başlat
  • innodb motorunu kullanarak tüm veritabanlarını bırak
  • MySQL'i durdur
  • ibdata dosyasını kaldır
  • rm ib_logfile [01]
  • mysql'i başlatın, her şey yolundaysa syslog'u kontrol edin
  • çöpünü yeniden yükle

bu şekilde innodb table / database'i her bıraktığınızda alanı geri kazanabileceksiniz - ilişkili idb dosyaları derhal kaldırılacaktır.


Ben hiç damping ve tabloları yeniden yükleme olmadan küçültmek olmaz anlamak. Ancak, InnoDB veritabanlarını düşürdüysem tekrar büyümeye başlamadan önce o "boş" alanı kullanacak mı?
nachito

1
@nachito Evet, olacak.
Jeff Ferland


Yanıtınız, cevabımın yapmış olduğu gibi sorunu bulanıklaştırmadan basit bir öneri. +1 !!!
RolandoMySQLDBA

1
Cevap, veri dosyaları tarafından kullanılan alanı azaltmak için bir çözümdür, ancak bununla ilgili değer hakkında bir tartışma değildir ve okuduğum soru budur. 15 GB ibdata dosyası büyük bir sorun mu?
Jeff Ferland
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.