sql >> Databáze >  >> RDS >> Mysql

Výkon socket.io jeden emit na řádek databáze

Přehodnoťte rozhraní

Za prvé, návrh uživatelského rozhraní, který zobrazuje 50–100 000 řádků na klientovi, pravděpodobně není nejlepší uživatelské rozhraní. Nejen, že velké množství dat k odeslání klientovi a ke správě klienta je v některých mobilních zařízeních možná nepraktické, ale je to samozřejmě mnohem více řádků, než který jednotlivý uživatel skutečně přečte v jakékoli dané interakci s strana. Prvním příkazem tedy může být přehodnotit design uživatelského rozhraní a vytvořit nějaký druh rozhraní více řízeného poptávkou (stránkované, virtuální rolování, klíčované písmenem atd...). Existuje mnoho různých možností pro jiný (a doufejme, že lepší) design uživatelského rozhraní, který snižuje objem přenosu dat. Který návrh by byl nejlepší, zcela závisí na datech a pravděpodobných modelech použití uživatelem.

Odesílat data v blocích

To znamená, že pokud byste chtěli přenést tolik dat klientovi, pravděpodobně je budete chtít posílat po částech (skupinách řádků najednou). Myšlenka s bloky spočívá v tom, že odešlete spotřební množství dat v jednom bloku, takže je klient může analyzovat, zpracovat, ukázat výsledky a pak být připraven na další blok. Klient může zůstat aktivní po celou dobu, protože má k dispozici cykly mezi bloky pro zpracování dalších uživatelských událostí. Posílání po částech však snižuje režii odesílání samostatné zprávy pro každý jednotlivý řádek. Pokud váš server používá kompresi, pak chunks dává větší šanci na efektivitu komprese. Jak velký by měl být kus (např. kolik řádků dat by měl obsahovat) závisí na řadě faktorů a pravděpodobně se nejlépe určí experimentováním s pravděpodobnými klienty nebo klientem s nejnižším očekávaným výkonem. Můžete například chtít odeslat 100 řádků na zprávu.

Pro data použijte efektivní formát přenosu

A pokud používáte socket.io k přenosu velkého množství dat, možná budete chtít znovu prozkoumat, jak používáte formát JSON. Například odeslání 100 000 objektů, které všechny opakují přesně stejné názvy vlastností, není příliš efektivní. Často můžete vymyslet své vlastní optimalizace, které se vyvarují opakování názvů vlastností, které jsou v každém objektu naprosto stejné. Například místo odeslání 100 000 těchto:

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

pokud má každý jednotlivý objekt přesně stejné vlastnosti, můžete názvy vlastností buď zakódovat do svého vlastního kódu, nebo názvy vlastností odeslat jednou a poté jednoduše odeslat čárkami oddělený seznam hodnot v poli, které může přijímající kód vložit do objektu. s příslušnými názvy vlastností:

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

Velikost dat lze někdy snížit 2-3x jednoduchým odstraněním nadbytečných informací.




  1. Závažná chyba:Nezachycená výjimka 'mysqli_sql_exception' se zprávou 'V dotazu/připraveném příkazu nebyl použit žádný index'

  2. Jak ukládat a načítat textová data v MySQL při zachování zalomení řádků?

  3. Přehled VACUUM Processing v PostgreSQL

  4. MYSQL:Aktualizujte pole se spojením více polí