2010-08-18 13 views
14

MySQL TEXT ve MEDIUMTEXT alanlarının boyutlarını/depolama kısıtlamalarını anlıyorum, ancak bir alanın varolan verilerle dönüştürülmesinden kaynaklanan olumsuz etkilere hiç bakmadığımdan emin olmak istedim (değişiklik yapmadan önce) TEXT'den MEDIUMTEXT'e.MySQL TEXT alanının MEDIUMTEXT'e dönüştürülmesinde herhangi bir tuzak var mı?

Endişelerim temel olarak performans, bütünlük ve disk depolamadır.

sayesinde veritabanı katmanında performans, bütünlük, ve disk depolama ile ilgili olarak

cevap

23

, ben bu konuda endişe olmaz.

  • Varchar, metin ve blob gibi değişken uzunlukta veriler dolgu olmadan depolanır.
  • Dürüstlük ile ilgili herhangi bir sorun bilmiyorum. Tüm veri türleri, veritabanı motoru tarafından atomik olarak işlenir.
  • Tabii ki gerçekten uzun metin verileriniz varsa, o verileri getirdiğinizde disk G/Ç ve ağ bant genişliği için daha fazla depolama alanı ve daha fazla zaman alacaktır. Ama eğer veri tabanına koymanız gereken veriler buysa, o zaman yapmanız gereken şey budur.
ben bir olası etkisi düşünebiliriz

:

Bazı istemci arayüzü kütüphaneleri öncesi tahsis sonuçları tutmak için bir tampon ve istemci bilmiyor çünkü onlar, olası en büyük değeri için yeterli bellek ayrılamadı Veriler alıncaya kadar. Bu nedenle, kitaplık mediumtext için 16MB ayırarak, text için 64 KB ayırırdı. Bu, müşteri katmanınızda düşük bir bellek sınırınız varsa dikkat etmeniz gereken bir şeydir. Örneğin, PHP komut dosyaları için bir memory_limit yapılandırma parametresine sahiptir ve veri sonuç kümeleri için ayrılmış arabellek buna değecektir.

+0

Hızlı yanıt için teşekkürler, Bill! – scooterhanson

+1

Bazı istemci arabirim kitaplıkları, bu bellek sorununun PHP'deki eski mysql kitaplıklarıyla ilgili bir sorun olduğunu anladım. Ancak, 3 yıl sonra artık bu bir problem olmamalı. – kasimir

+3

@kasimir: PHP 5.6 ve PDO ile "mediumtext", "metinden" daha fazla bellek kullanır (aynı değerle, boş bir dize). Benim basit testimde, fark 0.5 MiB vs 1.5 MiB'dir. – Bell