SevkiBilge

PHP'de PDO ile hazırlıklı sorgularda performans sorunu yaşayan var mı?

ErcanTuncX
· 5 gün önce · 2 görüntülenme
Arkadaşlar merhaba, uzun süredir PHP ile proje geliştiriyorum ve PDO kullanımı konusunda bir takım sorunlar yaşıyorum. Özellikle hazırlıklı sorgularda (prepared statements) bir performans düşüklüğü hissediyorum. Normal sorgulara göre bariz bir şekilde daha yavaş çalışıyor. Örneğin aynı sorguyu doğrudan query() ile çalıştırdığımda 0.01 saniyede dönerken, PDO’nun prepare() ve execute() metodlarıyla 0.05-0.07 saniyeye çıkıyor. Tabii bu küçük bir fark gibi görünebilir ama yüksek trafikli bir sitede çok sayıda sorgu olduğu için ciddi bir yük oluşturuyor. Acaba siz de benzer bir durumla karşılaştınız mı? PDO’nun hazırlıklı sorguları gerçekten bu kadar mı yavaş, yoksa ben mi bir yerde hata yapıyorum?

Özellikle veritabanı bağlantısını her seferinde yeniden kuruyor olmamdan şüpheleniyorum. PDO bağlantısını bir kere kurup sınıf içinde saklıyorum, ama yine de hazırlıklı sorgularda her çağrıda ayrı bir hazırlık yapılıyor. Belki de bu hazırlık aşaması MySQL tarafında ekstra bir yük oluşturuyordur. Aynı sorguyu birden fazla kez çalıştırmak zorunda kaldığımda bile performans artışı göremiyorum. Hatta bazen aynı sorguyu döngü içinde tekrar tekrar çağırınca, işler daha da kötüleşiyor. Acaba PDO’nun emülasyon modu mu kapalı olmalı, yoksa tamponlama (buffering) ile ilgili bir ayar mı kaçırıyorum?

Bir de şöyle bir durum var: Ben genelde MySQL kullanıyorum ve InnoDB motoru ile çalışıyorum. Acaba tablo yapısı veya indeksleme ile ilgili bir sorun olabilir mi? Hazırlıklı sorguların plan önbellekleme (query cache) ile nasıl etkileşime girdiğini tam olarak çözebilmiş değilim. Sizlerin deneyimleri neler? PDO ile hazırlıklı sorgularda performansı artırmak için hangi ayarları yapıyorsunuz? Ya da belki de mysqli’ye geçmek daha mantıklı mı? Konu hakkında fikri olan varsa lütfen yazsın, tartışalım.
1 yanıt
CengizArslan
5 gün önce
Ben de bir ara çok uğraştım bu konuda. PDO'nun kendisi değil de genelde sorguların tekrar tekrar hazırlanması can sıkıyor. Eğer aynı sorguyu çok kez çalıştıracaksan, bir kere hazırlayıp sonra sadece parametre değiştirerek kullanmak bayağı rahatlatıyor.

Yanıt yazmak için giriş yapın.