Arkadaşlar selam, uzun zamandır PHP ile çalışıyorum ama son zamanlarda projelerimde büyük veri setleriyle uğraşmak zorunda kaldım ve sayfalama işlemleri ciddi bir performans sorunu haline geldi. Özellikle 100 bin kayıt üzerindeki tablolarda, klasik OFFSET/LIMIT kullanarak sayfalama yapmak, sayfa numarası büyüdükçe inanılmaz yavaşlıyor. Örneğin 500. sayfayı çekmeye çalıştığımda sorgu süresi 10 saniyeyi buluyor, bu da kullanıcı deneyimini mahvediyor. Ben genelde MySQL kullanıyorum, ama bu sorunun altından kalkmak için ne gibi yöntemler denemeliyim? Özellikle "keyset pagination" veya "cursor based pagination" diye bir şey duydum ama gerçek hayatta uygulaması nasıl oluyor, deneyen var mı?
İkinci olarak, sayfalama sırasında veritabanına gereksiz yük bindirmemek için indexing konusunu da sorgulamak istiyorum. Tablolarımda genelde id sütununda birincil anahtar var, ama sorgularda başka sütunlara göre sıralama yapınca (mesela tarih, isim gibi) bu index işe yaramıyor. COMPOSITE INDEX oluşturup sayfalama sorgularını hızlandırmak mümkün mü? Bunun dışında, sayfalanan veri setini önbelleğe almak da aklıma geliyor ama sürekli değişen verilerde bu ne kadar sağlıklı olur? Mesela her 5 dakikada bir güncellenen bir liste varsa, önbellek stratejisi nasıl olmalı? Özellikle Redis ile sayfalama yapanlar var mı, nasıl bir yol izliyorsunuz?
Bir de şu konu var: Klasik sayfa numarası yerine "daha fazla yükle" butonu gibi sonsuz kaydırma yöntemleri kullanmak performansı artırır mı? Ben test ettiğimde, sonsuz kaydırma da aslında aynı OFFSET/LIMIT mantığıyla çalışıyor, sadece istemci tarafında farklı görünüyor. Ama belki AJAX ile parça parça veri çekmek daha hafif olabilir? Ya da veriyi direkt sayfalama yapmadan, filtreleme ve arama ile sınırlandırmak daha mı mantıklı? Büyük ölçekli bir e-ticaret sitesi düşünün, ürün listeleme sayfalarında bu işi nasıl optimize ediyorlar? Benim şu anki projemde kullanıcılar 10 farklı filtreyle arama yapabiliyor, bu da sorguları daha da karmaşık hale getiriyor. Tecrübelerinizi ve tavsiyelerinizi merak ediyorum, şimdiden teşekkürler.
İkinci olarak, sayfalama sırasında veritabanına gereksiz yük bindirmemek için indexing konusunu da sorgulamak istiyorum. Tablolarımda genelde id sütununda birincil anahtar var, ama sorgularda başka sütunlara göre sıralama yapınca (mesela tarih, isim gibi) bu index işe yaramıyor. COMPOSITE INDEX oluşturup sayfalama sorgularını hızlandırmak mümkün mü? Bunun dışında, sayfalanan veri setini önbelleğe almak da aklıma geliyor ama sürekli değişen verilerde bu ne kadar sağlıklı olur? Mesela her 5 dakikada bir güncellenen bir liste varsa, önbellek stratejisi nasıl olmalı? Özellikle Redis ile sayfalama yapanlar var mı, nasıl bir yol izliyorsunuz?
Bir de şu konu var: Klasik sayfa numarası yerine "daha fazla yükle" butonu gibi sonsuz kaydırma yöntemleri kullanmak performansı artırır mı? Ben test ettiğimde, sonsuz kaydırma da aslında aynı OFFSET/LIMIT mantığıyla çalışıyor, sadece istemci tarafında farklı görünüyor. Ama belki AJAX ile parça parça veri çekmek daha hafif olabilir? Ya da veriyi direkt sayfalama yapmadan, filtreleme ve arama ile sınırlandırmak daha mı mantıklı? Büyük ölçekli bir e-ticaret sitesi düşünün, ürün listeleme sayfalarında bu işi nasıl optimize ediyorlar? Benim şu anki projemde kullanıcılar 10 farklı filtreyle arama yapabiliyor, bu da sorguları daha da karmaşık hale getiriyor. Tecrübelerinizi ve tavsiyelerinizi merak ediyorum, şimdiden teşekkürler.