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

Jak sprawić, by zapytanie mysql było stale odświeżane w PHP?

Utknąłeś z odpytywaniem z aktualnym stosem technologii. MySQL nie ma żadnego dobrego sposobu, aby wysłać Ci powiadomienie, że jest coś nowego do zobaczenia.

(Możesz rozważyć dodanie podsystemu kolejkowania wiadomości, takiego jak na przykład RabbitMQ, ale wymagałoby to dużej zmiany w strukturze Twojej aplikacji).

Kilka wskazówek dotyczących obsługi ankiet przy możliwie najniższych kosztach.

  1. Ustaw oczekiwania użytkowników na kilka sekund opóźnienia w wiadomościach, a nie na milisekundy.

  2. Zapytaj tak często, jak to konieczne, aby spełnić oczekiwania dotyczące opóźnień.

  3. Unikaj wysyłania zapytań do dużej ilości danych przy każdym zapytaniu. Jak możesz to zrobić?

    a. Zapisz ostatnią sygnaturę czasową przy każdym uruchomieniu zapytania

    b. Nie używaj SELECT * . Zamiast tego podaj nazwy kolumn, których faktycznie potrzebujesz. Pozwala to optymalizatorowi MySQL na obniżenie kosztów zapytań.

    c. Spraw, aby Twoje zapytania wykonywały SELECT whatever WHERE timestamp > saved_timestamp ORDER BY timestamp więc dostajesz tylko nowe przedmioty ze swojego stołu, w kolejności. Jeśli twój system nie jest bardzo zajęty, te SELECTy często nie zwracają żadnych wierszy. To dobrze.

    d. Upewnij się, że masz indeks wielokolumnowy na sygnaturze czasowej i innych kolumnach w instrukcji SELECT. Nazywa się to indeksem pokrywającym .

    mi. Zaraz po otwarciu połączenia z MySQL wydaj tę instrukcję SQL. Pozwala MySQL na pobieranie danych przy mniejszej rywalizacji z innymi klientami MySQL wstawiającymi wiersze do tabeli.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Jeśli robisz to za pomocą AJAX z przeglądarek użytkowników, chcesz uwzględnić najnowszą sygnaturę czasową w żądaniach AJAX, aby móc dostarczać nowe potrzebne nowe elementy do przeglądarki każdego użytkownika.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - jak ustawić auto-inkrementację, aby zaczynała się od zera

  2. Mysql -- Ostatnie 30 dni

  3. Nie można połączyć się z serwerem MySQL na (IP lub nazwa domeny)

  4. Jak klastrować systemy równoważenia obciążenia ProxySQL

  5. Wstaw wybierz MySQL z przygotowanymi oświadczeniami