Bu yazıda şunları öğreneceksiniz:
1. N+1 Sorgu Problemi Nedir?
2. N+1 Sorgu Probleminden Neden Kaçınmanız Gerekiyor?
3. N+1 Sorgu Sorunundan Kaynaklanan Performans Sorunlarını Bulmak İçin Scout APM Kullanarak Laravel veya Symfony Uygulama Sitelerinizi Nasıl Daha Hızlı Yapabilirsiniz?
1. N+1 Sorgu Problemi Nedir?
Laravel, Symfony veya başka bir PHP çerçevesi kullanıyorsanız, uygulama nesnelerini uygulama veritabanında depolamak ve almak için sağladıkları Nesne-İlişkisel Eşleme (ORM) özelliklerini kullanıyor olabilirsiniz.
Örneğin, müşteri bilgilerini depolayan bir veritabanı tablonuz olabilir. Her müşterinin satın aldığı ürünleri saklamak için başka bir veritabanı tablonuz da olabilir.
Müşterilerin satın aldığı ürünlerin listesini göstermek istediğiniz bir sayfanız varsa, bu nesnelerin verilerini veritabanından almak için muhtemelen ORM sınıflarını kullanırsınız.
Bir müşteri ve satın aldığı tüm ürünler için veritabanından tüm bu nesneleri alırsanız, ORM sınıfları, ürün nesnelerini ayrı ayrı almak için yalnızca bir müşteri nesnesi verisi sorgusu ve N sorgusu yürütebilir.
Veritabanında az sayıda müşteri ve ürün nesnesi varsa, bu yaklaşım hızlı görünebilir çünkü yalnızca N+1 sorguları yürütürsünüz, burada N her müşterinin satın aldığı ürün sayısıdır.
Ancak, uygulama büyüdükten sonra ve veritabanında çok sayıda müşteriniz ve çok sayıda ürününüz olduğunda, bir müşterinin satın aldığı ürünleri listelemek için çok fazla sorgulama yapmanız gerekir ve uygulamanız yavaşlar.
2. N+1 Sorgu Probleminden Neden Kaçınmanız Gerekiyor?
Anlayacağınız gibi, N+1 sorgusu sorunu, uygulamanızın kullanıcı sayısı az olduğunda büyük bir sorun değildir.
Ancak uygulamanız çok sayıda kullanıcı tarafından kullanılmaya başladığında, yürütülen sorgu sayısı çok artmaya başlar. Uygulamanız, uygulamanın kullandığı noktaya kadar çok yavaşlayabilir, şikayet etmeye başlayabilir ve hatta uygulamayı kullanmaktan vazgeçebilir.
Müşterilerinizin işinin başarısı ile ilgilenen iyi bir programcı olmak istiyorsanız, N+1 sorgu problemini bir an önce daha iyi halletmeye hazırlanmalısınız.
Bu sorun için iyi bir çözüm uygularsanız, müşterileriniz her zaman sizi daha fazla işe almak isteyeceklerdir çünkü siz şimdiki ve gelecekteki müşteri başarısı ile ilgilenen bir geliştiricisiniz.
3. N+1 Sorgu Sorunundan Kaynaklanan Performans Sorunlarını Bulmak İçin Scout APM Kullanarak Laravel veya Symfony Uygulama Sitelerinizi Nasıl Daha Hızlı Yapabilirsiniz?
Bu makaleyi burada okuduğunuza göre, muhtemelen farkında olmasanız bile N+1 sorgu problemine zaten sahipsiniz.
Bu sorunun çözümü, tüm uygulama kodunuzu gözden geçirmek ve bu sorunu yaşayabileceğiniz PHP kodunu belirlemektir. Ardından, sorguların yürütülmesi için geçen süreyi ölçmeniz gerekir.
Örneğin, her müşterinin satın almış olabileceği ürünlerin listelendiği yukarıdaki örnek durumu göz önünde bulundurarak, sorguların yürütülmesi için geçen süreyi ölçmeniz gerekir.
Uygulama sitesi müşterilerinin 10 kat daha fazla ürün satın alma durumunu düşünün. Sorguların yürütülmesi ne kadar sürer? 10 kat daha fazla zaman olur mu? O kadar zaman bekleyecek sabrları var mıydı?
Cevabınız hayır ise, uygulamanızın tüm önemli bölümlerindeki N+1 sorgu probleminizi mutlaka çözmeniz gerekir.
Bu manuel olarak yapılabilir, ancak performans sorununu çözmeniz çok zaman alacaktır.
Neyse ki, Laravel ve Symfony tabanlı bir PHP uygulaması geliştirdiyseniz, N+1 sorgu problemini çözmek için daha kolay bir yaklaşım var.
Sıfırdan Laravel veya Symfony kullanarak bir uygulama geliştirdiyseniz, performans sorunlarını bulmak ve düzeltmek için artık daha iyi bir çözümünüz var.
Scout, PHP dahil birçok Web programlama dilini destekleyen bir uygulama performansı izleme uygulamasıdır. Laravel veya Symfony kullandıysanız, uygulamanızı oluşturun, N+1 sorgu problemini çözmek için düzeltilmesi gereken kodu bulmak için iyi bir destek sağlar.
O yüzden şimdilik denemenizi öneririm İzci Başvuru İzleme PHP desteği ile. 14 gün boyunca ücretsiz deneyebilirsiniz. Bu süre, N+1 sorgu problemi olan PHP kodunu hızlı bir şekilde bulmanıza yardımcı olması için bu özelliği test etmeniz için yeterli olacaktır. sadece şuraya git Ücretsiz deneme için izci kaydı sayfasından ücretsiz olarak denemeye başlayabilirsiniz.
hakkında daha fazla konuşacağım İzci Başvuru İzleme sonraki haftalarda. Şimdilik, sizi şu adrese giderek denemeye davet ediyorum. Ücretsiz deneme için izci kaydı sayfa, bu uygulamanın avantajlarını ödemeden yaşayabilirsiniz.