Veritabanı erişim hızı vs dosya erişim hızı

3 Cevap php

Ben php geliştiriyorum site sayısı sayfa başına birçok MySQL veritabanı isteklerini yapar. Birçok düzgün tasarlanmış indeks en küçük isteklerdir olsa. Bu sayfalar için bir önbellek komut dosyası geliştirmek için ise değer olacak eğer ben bilmiyorum.

1) dosya veritabanı istekleri genellikle daha hızlı I / O mısınız? Bu sunucuda bağlıdır? Kaç her sunucunuzun işleyebilir test etmek için bir yolu var mı?

2) sayfalarından biri, bir dosya için veritabanını denetler o varsa, o göstermek için ne karar verir görmek için sunucuyu kontrol eder. Ben tahmin ediyorum ki bu önbelleğe alınmış bir sayfa görünümünde yararlanacak?

Bunu bana iletmek olabilir bu konu hakkında başka bir bilgi varsa da büyük mutluluk duyacağız.

Teşekkürler

3 Cevap

Eğer okuma-ağır erişimi (dosya isimleri bakarak, vb) yapıyor iseniz memcached yarar olabilir. Zaman önbellek kaçışları Daha sonra sadece DB sorgu (ve muhtemelen dosyaları), bellekte (app bağlı olarak, son kullanılan, en son oluşturulan) verileri "sıcak" depolayabilir. Bellek erişimi, uzak veritabanı veya dosyaların çok daha hızlıdır.

Yazdığınız ağır erişimi gerekirse, bir veritabanı gitmek için yoludur. Eğer MySQL kullanıyorsanız, InnoDB tablo veya satır düzeyinde kilitleme destekleyen başka motorunu kullanabilirsiniz. O başka birisi (ya da, daha kötüsü zaten yazarken) yazıyor ise engelleme insanları önlemek olacaktır.

Ama sonuçta, bu verilere bağlıdır.

Orada ne kadar, verilerin nasıl yapılandırıldığını bağlıdır ve ne sıklıkla değişir.

Eğer nispeten basit ilişkileri nispeten statik veri nispeten küçük miktarlarda, var ise - o zaman düz dosyalar iş için doğru araçtır.

Veri arasındaki bağlantıların daha karmaşık olduğunda İlişkisel veritabanları kendi girer. Temel için onlar biraz overkill olabilir 'tabloları bakmak'.

Eğer nasıl buluyorsunuz ek sorunu var düz dosyalar ile, ve büyük miktarda veri için - veri sürekli değişiyor Ama eğer, o zaman sadece bir veritabanı kullanmak yerine elle konfigürasyon yönetimini ele almak daha kolay olabilir verimli, ihtiyaç bir bit.

Düz performansı açısından bakıldığında, bu ara dosya önbelleğe ile veri erişim mantığı karmaşık ayar veritabanı sunucusu için akıllıca değildir. Sonuçlar önbelleklenebilir ise iyi bir veritabanı sunucusu kendi önbelleğe yapardı. (Mysql ile teh durum nedir emin değilim).

Eğer performans sorunları varsa, gerçek darboğazları görmek için sayfaları profili olmalıdır. Eğer bile denklemi içine güçlü / daha donanım koyarak optimize kodları, bana-bir fan uzun vadede daha ucuz olduğu gibi.

Eğer hala önbelleklerini kullanmanız gerekiyorsa, memcached gibi, varolan bir çözümü kullanmayı düşünün.