PHP ve Veritabanları: Views, Fonksiyonlar ve procedure performans

4 Cevap php

Ben PostgreSQL ile bir PHP web uygulaması üzerinde çalışıyorum. SQL sorguları tüm PHP kod adı ediliyor. Ben hiçbir Görüntüleme, işlevler veya saklı yordamlar gördüm. Öğrendiğim kadarıyla, onlar avantajları ile veritabanında saklanır beri bu veritabanı değişmezler kullanmak her zaman daha iyidir:

  • Encapsulation
  • Soyutlama
  • Erişim (DB Admin sınırlı) hak ve sorumluluk
  • Derleme kaçının

Ben de performans iyileştirmeleri hakkında bir şeyler okumuştum. Takım henüz bu kullanılmayan neden ben gerçekten görmüyorum. Bu özel durumda, ben deneyim, onları kullanmak değil için herhangi bir iyi bir neden olduğunu, bilmek istiyorum?

Kod boyunca pek çok "SELECT" sorguları vardır Çoğunlukla ne zaman, neden Görüntüleme kullanmayalım?

Ben kodu üstlenmeden planlama ve DB Server altprogramciklar kodlama başlamak. Ben lehine veya bu karşı görüşler bilmek istiyorum. Proje (birçok tablolar) oldukça büyük olduğunu ve depolanması gereken çok sayıda veri bekliyor. Bunu biraz daha fazla malzeme ile bir sosyal ağ olurdu veri miktarı, bu yüzden evet, oldukça büyük.

4 Cevap

I. Views offer encapsulation, but if not carefully designed they can slow down the application. Use with caution.
II. Use functions if needed, no reason to put them in if they are unneeded.
III. Stored Procedures are a godsend, use them everywhere there is a static query!!

Sorgular vs görüşlerine yanıt olarak, Saklı Yordam adlı ile görüşlerini kullanmayı deneyin, Saklı Yordam en most manzaralı alınan performans hit bazı azaltmak olacaktır.

Benim düşünceme göre, görünümler ve saklı yordamlar genellikle az parası ile sadece ekstra sorun vardır.

Ben yazılı ve farklı web uygulamaları bir grup ile çalıştı, kullanıcıların bazillions ile hiçbiri olsa var. Saklanan prosedürleri olanlar garip vardır. Ad-hoc SQL sorguları ile olanlar (kullanım tutucular ve diğer en iyi uygulamalar, SQL enjeksiyonu önlemek için) bol hızlı. Benim favori kullanımı veritabanı soyutlama (ORM) böylece kod PHP sınıfları ile fırsatlar ve veritabanı ile yerine doğrudan nesneleri. Ben giderek bunun için symfony çerçeve dönüm edilmiştir.

Ayrıca: Genel olarak zamanından önce performans için optimize olmamalıdır. (Hiçbir saklı prosedürler) şimdi iyi hızlı gelişimi için optimize. İşe yarıyor sonra, benchmark app, darboğazları bulmak ve bunları optimize. Sadece zaman atık ve baştan optimize çalıştığınızda karmaşıklığı olun.

Saklanan prosedürleri avantajı tüm işlem veritabanında yapılır, çünkü ara sonuç ileri ve geri manevra ayarlar ağ yükü uğramak yok olmasıdır.

Dezavantajı orada her RDBMS sistem saklı yordamlar için kendine özgü sözdizimi olmasıdır. Saklı yordamlar iş mantığını uygulayarak, hemen hemen tek bir veritabanı ürünü, size uygulama veritabanı bağımsız olmayı düşünüyorsanız akılda tutmak gerekir şey için app kısıtlayan demektir. Gahooa belirttiği gibi saklanan prosedürleri veritabanında yaşıyor çünkü Ayrıca, bir geliştirici olarak onlara erişim yerel politikası tarafından kısıtlanmış olabilir; Bazı kuruluşlar sadece DBA'ların veritabanı dokunmasına izin edecektir.

@ WolfmanDragon: görünümler doğal şeyler yavaş yaparsanız ben bilmiyorum; Smiles bakış karmaşıklığı ve kullandığınız RDBMS bağlı olarak, sanırım, değişebilir. Ayrıca, bazı RDBMS onlara erişim temel bir tablo olarak hızlı olduğunu bu nedenle yaygın olarak kullanılan görüşlerini gerçekleştirmek için izin verir.

Biz only burada önemli bir yararı yoktur belirtilen özellikleri kullanmayı deneyin

"Veritabanı" parçası olmak, onlar yerine
"source code changes" daha "schema changes" giren ve sürüm kontrolü için doğal olarak zordur.

Ne yaparsan yap, sadece emin görünürlüğünü tam korumak yapmak değişti-ne-zaman, sen diff geri alma ve sorunları durumunda kurtarmak böylece.