Cevaplar
-
PHP MyAdmin i bilemeyeceğim. Ama Stored Procedure dediğin Ms Sql ile gelen birşeydir.
My Sql de ki karşılığı farklı olabilir.
Stored Procedure hazır yordamlardır. Ne gibi? Kullanacağın sorguyu önceden hazırlarsın ve çalıştırırsın. İhtiyacın olduğunda sadece çağırıp kullanırsın. Yani o orada hep hazırdır. Çalışması gerekmez.
Askerdeki AMM buna örnektir :)
İhtiyaç olduğunda anında cevap verebilir. -
Karmaşık işleri php'den yapacağına mysql'in içerisinden yaptığını düşün. Mesela bir döngü oluşturuyorsun, içerisinde birşeyleri hesaplayıp başka bir tabloyu güncelliyorsun.
Bunu PHP'den yaparsan işlem bir nedenden dolayı yarıda kesilirse yarım yamalak kayıtlar oluşmaması için transaction içine alman lazım. Eğer kesilirse rollback edersin, bittiyse commit edersin yaptığın değişiklikler veritabanına kaydedilir.
Bu işlemler sırasında her bir işlem için mysql'e datalar gönderilir, mysql işlem yapar, sonucu gönderir, sonra bir sonraki işlem için datalar gönderilir, geri gelir vs. Bunu stored procedure ile yaparsan mysql data alışverişini kendi içerisinde yapacağı için teorikte daha hızlı yapmasını bekleriz. Ayrıca mysql tüm komutları bir arada değerlendirebileceği için daha iyi optimizasyon bekleriz. Pratikte, bildiğim kadarıyla bu avantajlar dikkate alınmayacak kadar küçük kalıyor.
En büyük dezavantajı ise işi PHP yerine MySQL'e yaptırarak yükü web server'dan alıp db'ye yüklüyorsun. Büyük sitelerde web server'lar ayrı db server'lar ayrı oluyor. Dolayısıyla web server'ların yükünü hafifletip DB server'ın yükünü arttırıyorsun. Bu da web projeleri için çok istenen birşey değil.
Stored procedure'un şöyle avantajları da oluyor. Mesela biz Bilkent Üniversitesi'nde öğrencilerin not hesaplamaları, müfredatların belirlenmesi, öğrencilere ders atanması gibi kritik işleri procedure ile yapıyoruz. Böylece aynı prosedürü ister dephiyle, ister php ister perl'le kullanabiliyoruz. Ama DB Oracle ve Oracle'ın stored procedure'ları hem çok iyi optimize ediliyor hem de debugging'i var, profiling var, kabiliyetleri çok yüksek (mail bile attırdık).
Başka bir senaryo da, iş yaptığım bir kişi projesinin çalışma mantığının gizli kalmasını istiyordu. Kendisi işi yapan prosedürler yazdı sonra da bana parametre ve dönmesi gereken değişkenleri verdi. İçerde neler olduğunu hatta veritabanında hangi tablo var onu bile bilmeden programı yazdık verdik. Ama bu da postgresql'di
mysql'in prosedürleri en son baktığımda çok basitti öyle pek fazla bir işe yaramıyordu, son hali nasıl bilmiyorum. Ama özetle stored procedure kullanacaksan MySQL doğru bir seçim değil bence.
phpMyAdmin'den kayıtlı prosedürleri göremediğin için prosedürü eklesen bile güncellemen zor. Onun yerine mysql'in kendi tool'u var: MySQL Workbench. Onu kullanabilirsin.