
İçerikler
Php’nin mysql_* ifadelerinden desteğini kaldırmasından sonra PDO ve mysqli aktif olarak kullanılmaya başlandı. Bu durumda php bilgisinin sadece mysql_* ifadelerinden ibaret olanlar, pdo yada mysqli mi öğrenmeli, yoksa bu şekilde bırakıp devam mı etmeli? Gibi bir çok fazla soruyla karşılaşacaklardır. Öncelikle hala mysql_* ifadeleri kullanmaya devam ederseniz şu şekilde bir hata ile karşılaşmanız çok büyük olasıdır;
THİS EXTENSİON İS NOT RECOMMENDED FOR WRİTİNG NEW CODE. INSTEAD, EİTHER THE MYSQLİ OR PDO_MYSQL EXTENSİON SHOULD BE USED. SEE ALSO THE MYSQL API OVERVİEW FOR FURTHER HELP WHİLE CHOOSİNG A MYSQL API.
Bu şekilde bir uyarıyla karşılaştığınızda yapmanız gereken tek bir şey var. Oda sisteminizi PDO yada MySQLi ile tekrardan derlemeniz. Yine de bir şekilde mysql_* ifadelerini çalıştırmayı başarıp sorunsuz bir şekilde sistemin çalışmasını sağlarsanız da bu seferde güvenlik açıkları olmak üzere bir çok sorunla karşılaşacaksınız.
Nedir Bu PDO ve MySQLi?
Öncelikle PDO ve MySQLi arasında bir seçim yapmanız gerekmetedir. PDO ve MySQLi arasındaki farkı daha iyi anlayabilmeniz adına PDO ve MySQLi Karşılaştırma sonuçlarına bakabilirsiniz.
PDO, yani “PHP Data Objects/PHP Veri Objeleri” en kısaltılmış tanımıyla, hafif ve tutarlı bir şekilde veri tabanına erişim sağlayan ara yüzdür. Adından da anlaşılacağı üzere “Nesne Tabanlı Programlama” arayüzüne sahiptir. Bundan dolayı da bir çok veri tanıyla çalışabilirsiniz.
MySQLi, yani “MySQL Improved Extension/Geliştirilmiş MySQL eklentisi” olarak kısaltılmıştır. MySQLi, mysql_* ifadesine oranla daha faza estetik ve güvenlik sağlamaktadır. MySQLi sadece MySQL veritabanı ile çalışmaktadır. PDO gibi bir çok veri tabanında çalışmanız mümkün değil.
MySQLi ve MySQL ismen bir birine çok yakın olduğu için bir çok soru da akıllarda kalabilir. Kalmaması için bu iki ifadeyi karşılaştırarak tüm soruları yanıtlamış olalım.
MySQLi ve MySQL Arasındaki Temel Farklar
- MySQLi eklentisi çıkan tüm yeniliklere uyum sağlayabilir.
- MySQLi güvenilir, geliştirilmesi kolay bir yapı sağlardır.
- Sorgu sonucu dönen veriler ilave işlemlere gerek kalmadan nesneye atanabilir.
- MySQLi kullanmanızda SQL injection ve diğer saldırıları karşı koruma sağlayabilirsiniz.
- MySQLi kullanımında daha yüksek performans alabilirsiniz.
- MySQLi verita banı karışıklığını önlemektedir.
PDO ve MySQLi Hız Testi
İsterseniz aynı verilerle yapılan MySQL işlemlerinde PDO ve MySQLi test edelim. Hangisi daha iyi sonuç doğuracak ve işlem süreleri bize nasıl sonuçlar verecek. Bu testimizi yaparken 100.000 veri üzerinden gerçekleştireceğiz.
[table “5” not found /]Yukarıdaki tablodan yola çıkacak olursak, 100.000 veri işlemede tüm alanlarda PDO daha üstün çıktı. Yuvarlak hesaplayacak olursak veri ekleme işlemlerinde 6, seçim işlemlerinde 8, güncellemede 6, silmedeyse 7 saniye fark bulunmakta. 100.000 veri de çalışılacak olan değerlerin sonuçları arasında ki fark bu şekilde. Tabi ben o kadar veriyle çalışmayacağım da diyebilirsiz. Ama bu sonuçları değiştirmeyecektir. Dilerseniz şimdi de 1.000.000 veri üzerinden yeni bir test yapalım.
[table “6” not found /]Görüldüğü üzere veri miktarı arttırkça PDO ve MySQLi kodlamasından doğan farkta göze çarpmakta. Bir milyon veri ile çalıştığınızda pdo ve mysqli ifadelerini kullanmanız durumunda yapacağınız işlemlere göre bu şekilde süreler hesaplanacaktır. Yinede bu bu verileri çok göz önünde bulundurmadan PDO yada MySQLi konusunda size uygun seçimleri yapmanız gerekmektedir.
Sonuç Olarak
Mysql_* ifadelerini kullanmaya bir şekilde devam edecek olursanız yukarıda ki bir çok özellik ve kullanımlardan mahrumkalmış olacaksınız. Mysql_* ifadelerini kullanmak alacağınız tüm tedbirlere rağmen yetersiz kalacaktır. Hız kaybınızın olması da gabası.