MySQL'de “Tepegöz” ne demektir, kötü olan nedir ve nasıl düzeltilir?


157

basit bir soru, ama bir süredir beni rahatsız ediyor ....

MySQL'de "genel gider" nedir ve endişelenmem gerekir mi?

"tabloyu optimize et" i tıklamak sorunu tam olarak düzeltir mi?

Yanıtlar:


147

Veritabanının bazı sorguları çalıştırmak için kullandığı geçici disk alanı olduğu anlaşılıyor, bu yüzden sadece bu gerçekten yükselirse endişelenmelisiniz.

'Tabloyu en iyileştirme'yi sabit sürücünüzün birleştirmesiyle karşılaştırabilirsiniz.

Alıntı yaparım:

Her veritabanı, zaman içinde, optimum performans düzeyinde tutmak için bir tür bakım gerektirir . Silinmiş satırları temizleme, yeniden sıralama, sıkıştırma, dizin yollarını yönetme, birleştirme vb. Mysql'de OPTİMİZASYON ve diğer veritabanlarındaki diğer terimler olarak bilinir. Örneğin, IBM DB2 / 400 bunu FİZİKSEL DOSYA ÜYESİNİ REORGANİZE EDER.

Bu, arabanızdaki yağı değiştirmek veya bir ayar yapmak gibi bir şey. Gerçekten gerekmediğini düşünebilirsiniz, ancak bunu yaparak arabanız çok daha iyi çalışır, daha iyi gaz sarfiyatı elde edersiniz, vb. Çok fazla kilometre alan bir araba daha sık ayar gerektirir. Yoğun kullanım alan bir veritabanı aynı şeyi gerektirir. Çok fazla UPDATE ve / veya DELETE işlemi yapıyorsanız ve özellikle tablolarınız değişken uzunlukta sütunlara (VARCHAR, TEXT, vb.) Sahipseniz, ayarlarınızı güncel tutmanız gerekir.


1
@Jasper Optimizasyon süresince tablolar tamamen kilitli mi (okuyamıyor / yazamıyor)?
Pacerier

4
Bu alıntı nereden geldi? Google'da birçok sonuç buluyorum.
Ian Hunter

hangisinin tepeye tekrar tekrar neden olduğunu nasıl bilebiliriz?
mahen3d

korkutucu teknik terimlerden bağımsız olarak mükemmel ve kolay bir örnek için teşekkür ederiz.
shyammakwana.me

1
"Gerçekten Yüksek" olarak kabul edilen nedir?
TV-C-15

87

Eğer phpMyAdminçağıran şeyden bahsediyorsanızoverhead (sadece yedekten geri zaman sanki), o zaman aynı veri dosyası ideal boyutu için bir tablo veri dosyası göreli gerçek boyutu.

Performans nedenleriyle, MySQLveri dosyalarını satırları sildikten veya güncelledikten sonra sıkıştırmaz.

Bu overhead tablo taraması için kötüdür, yani sorgunuzun tüm tablo değerlerinin üzerinden geçmesi gerektiğinde daha fazla boş alana bakması gerekir.

Tablonuzu ve dizinlerinizi sıkıştıracak şekilde overheadçalıştırarak kurtulabilirsiniz OPTIMIZE TABLE.


7
MySQL belge boyutu "Bir tablonun büyük bir bölümünü sildiyseniz veya değişken uzunlukta satırları olan bir tabloda birçok değişiklik
yaptıysanız

8

Genel gider , bir tablonun Data_free öğesidir , yani Ayrılan ancak kullanılmayan bayt sayısı. SQL komutu GÖSTER TABLOSU ile bulabiliriz . Masanız için ayrılan boyuttaki boş alandır.


1

Optimize tablosu çok sorunlu olabilir. Örneğin, tablo bir sitede yoğun olarak kullanılıyorsa.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

Bir MyISAM veya ARCHIVE tablosunun büyük bir bölümünü sildikten veya değişken uzunlukta satırlara sahip bir MyISAM veya ARCHIVE tablosunda (VARCHAR, VARBINARY, BLOB veya TEXT sütunlarına sahip tablolar) 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. <

Bu davranışı doğruladığımı düşünüyorum. Ve kesinlikle çok faydalı olurdu.

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.