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

wydajność socket.io jeden emit na wiersz bazy danych

Przemyśl interfejs

Po pierwsze, projekt interfejsu użytkownika, który pokazuje 50-100 tys. wierszy na kliencie, prawdopodobnie nie jest najlepszym interfejsem użytkownika. Jest to nie tylko duża ilość danych do wysłania do klienta i do zarządzania przez klienta i być może niepraktyczna na niektórych urządzeniach mobilnych, ale oczywiście jest to o wiele więcej wierszy niż jakikolwiek pojedynczy użytkownik faktycznie odczyta w dowolnej interakcji z Strona. Tak więc pierwszą kolejnością może być ponowne przemyślenie projektu interfejsu użytkownika i stworzenie czegoś w rodzaju interfejsu opartego na potrzebach (stronicowanego, wirtualnego przewijania, z kluczem literowym itp.). Istnieje wiele różnych możliwości innego (i, miejmy nadzieję, lepszego) projektu interfejsu użytkownika, który zmniejsza ilość przesyłanych danych. Który projekt byłby najlepszy, zależy wyłącznie od danych i prawdopodobnych modeli użytkowania przez użytkownika.

Wysyłaj dane porcjami

To powiedziawszy, jeśli zamierzasz przesłać tak dużo danych do klienta, prawdopodobnie będziesz chciał wysłać je porcjami (grupy wierszy na raz). Pomysł z porcjami polega na tym, że wysyłasz zużywalną ilość danych w jednej porcji, tak aby klient mógł je przeanalizować, przetworzyć, pokazać wyniki, a następnie być gotowym na kolejną porcję. Klient może pozostać aktywny przez cały czas, ponieważ ma dostępne cykle między porcjami w celu przetwarzania innych zdarzeń użytkownika. Ale wysyłanie go w kawałkach zmniejsza obciążenie związane z wysyłaniem oddzielnej wiadomości dla każdego wiersza. Jeśli twój serwer używa kompresji, to porcje dają również większą szansę na wydajność kompresji. Jak duży powinien być fragment (np. ile wierszy danych ma zawierać) zależy od wielu czynników i prawdopodobnie najlepiej jest określić poprzez eksperymentowanie z prawdopodobnymi klientami lub najniższym oczekiwanym klientem. Na przykład możesz chcieć wysłać 100 wierszy na wiadomość.

Użyj wydajnego formatu przesyłania danych

A jeśli używasz socket.io do przesyłania dużych ilości danych, możesz ponownie przyjrzeć się, jak używasz formatu JSON. Na przykład wysłanie 100 000 obiektów, które wszystkie powtarzają dokładnie te same nazwy właściwości, nie jest zbyt wydajne. Często można wymyślić własne optymalizacje, które pozwolą uniknąć powtarzania nazw właściwości, które są dokładnie takie same w każdym obiekcie. Na przykład zamiast wysyłać 100 000 z nich:

 {"firstname": "John", "lastname": "Bundy", "state": "Az", "country": "US"}

jeśli każdy pojedynczy obiekt ma dokładnie te same właściwości, możesz albo zakodować nazwy właściwości we własnym kodzie, albo wysłać nazwy właściwości raz, a następnie po prostu wysłać listę wartości oddzielonych przecinkami w tablicy, którą kod odbierający może umieścić w obiekcie z odpowiednimi nazwami właściwości:

 ["John", "Bundy", "Az", "US"]

Rozmiar danych można czasem zmniejszyć 2-3-krotnie, po prostu usuwając zbędne informacje.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest najbezpieczniejszy sposób dodania html/css/js do mysql?

  2. Formatowanie daty do formatu czytelnego dla człowieka

  3. Wyszukaj ciąg w kolumnie tekstowej w MySQL

  4. Jak połączyć się z MySQL z wiersza poleceń

  5. MAX(kolumna) zwraca mi błędną wartość