Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przygotowane zestawienia MySQL PHP PDO - problemy z wydajnością a bezpieczeństwo

Myślę, że należy to do kategorii „przedwczesnej optymalizacji”.

Jak znaczące są koszty ogólne? Czy to zmierzyłeś? Czy to w ogóle wpływa na wydajność twojego serwera?

Szanse są, że nie.

Plusem jest niezaprzeczalny zysk pod względem bezpieczeństwa (co powinno być główną troską każdego sklepu internetowego).

Z drugiej strony istnieje ryzyko, że może to wpłynąć na wydajność. Podany przez Ciebie link pokazuje, że niewłaściwie zaimplementowane przygotowanie PDO skutkuje w pewnych okolicznościach nieco niższą wydajnością niż nieprzygotowane oświadczenie. Różnica wydajności na 5000 przebiegów wynosi 0,298 sekundy.

Nieistotny. Tym bardziej, gdy zdasz sobie sprawę, że „nieprzygotowane” zapytania są uruchamiane bez procedury odkażania danych wejściowych, które byłyby wymagane, aby zapewnić ich bezpieczeństwo w żywym środowisku. Jeśli nie korzystasz z przygotowanych zapytań, potrzebujesz jakiejś formy oczyszczania danych wejściowych, aby zapobiec atakom SQL, a w zależności od tego, jak to się robi, może być konieczne ponowne przetworzenie zestawów wyników.

Podsumowując, nie ma znaczącego problemu z wydajnością, ale jest to znacząca korzyść w zakresie bezpieczeństwa. Stąd oficjalna rekomendacja korzystania z przygotowanych wypowiedzi.

W swoim pytaniu mówisz o „wspólnym sklepie internetowym”. „Zwykły e-sklep” nigdy nie będzie miał wystarczającego ruchu, aby martwić się o problem z wydajnością, jeśli taki istnieje. Kwestia bezpieczeństwa po drugiej stronie...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zduplikowany klucz przy zapisie lub aktualizacji?

  2. MySQL zaznacza wszystkie wpisy między dwiema datami niezależnie od roku

  3. Upsert MySQL (ON DUPLICATE KEY) przy użyciu przygotowanej instrukcji JDBC

  4. Jak uzyskać wiele zliczeń za pomocą jednego zapytania SQL?

  5. Operacje bitowe MySQL, filtr bloom