Szukam przyspieszenia niektórych zapytań za pomocą przygotowanych oświadczeń na stronie o dużym natężeniu ruchu. to, co nie wydaje mi się, że rozumiem poprawnie, to korzyść płynąca z używania przygotowanych stwierdzeń, chyba że mogą pozostać przygotowani na wiele połączeń. wygląda na to, że nie jest to możliwe z PDO, który również nie pozwala na trwałe połączenia. ale trwałe funkcje połączenia nie pozwalają na PDO.mysql trwale przygotowane oświadczenia
powiedzmy argumentów sake Używam kwerendy 5000 razy na sekundę: select * from some_table GDZIE some_column LIKE 'some_value'
z tego co rozumiem, PDO uniemożliwiłyby mysql z ponownej kompilacji i oceny zapytanie, czy miałbym zmienić "some_value" za każdym razem, gdy potrzebowałem zapytania. Rozumiem również, że "some_value" może być przesyłane w postaci binarnej zamiast ASCII, aby zaoszczędzić przepustowość, ale nie oszczędziłoby to wiele, gdybym musiał wysłać całe zapytanie za każdym razem, gdy otwierałem połączenie.
również z tego, co przeczytałem, procedur przechowywanych nie są rozwiązaniem, ponieważ te nie pozostają kompilowane za pośrednictwem wielu połączeń.
Czy jest jakieś rozwiązanie tego problemu? przechowywanie gdzieś przygotowanego oświadczenia na serwerze i pozostawienie go w pamięci i gotowe do strzału, gdy tylko otrzyma zmienne?
Czy jest jakiś sposób, aby to się stało, łącząc połączenie puli z PDO? (chociaż słyszałem również, że łączenie puli nie jest idealne, ponieważ może powodować blokowanie w pewnych warunkach)
Jeśli chcesz użyć trwałych połączeń, należy ustawić PDO :: ATTR_PERSISTENT w gamie opcji sterownika przekazany do konstruktora PDO . Jeśli ustawienie tego atrybutu przy użyciu PDO :: setAttribute() po utworzeniu obiektu, sterownik nie będzie używać połączeń trwałych. –
Dlaczego nie używać Memcached? –