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

Jak zajistit, aby se mysql dotaz neustále obnovoval v PHP?

Zasekli jste se u dotazování se svým aktuálním technologickým zásobníkem. MySQL nemá žádný dobrý způsob, jak vám poslat upozornění, že je něco nového k vidění.

(Můžete zvážit přidání subsystému pro řazení zpráv, jako je například RabbitMQ, ale to by vyžadovalo velkou změnu struktury vaší aplikace).

Několik pokynů pro zpracování dotazování s co nejnižšími náklady.

  1. Nastavte očekávání uživatelů na několik sekund latence zpráv, nikoli milisekundy.

  2. Dotazujte se tak často, jak je potřeba, abyste splnili očekávání ohledně latence.

  3. Vyhněte se dotazování na velké množství dat s každým dotazem. Jak to můžete udělat?

    A. Při každém spuštění dotazu uložte nejnovější časové razítko

    b. Nepoužívejte SELECT * . Místo toho uveďte názvy sloupců, které skutečně potřebujete. To umožňuje optimalizátoru MySQL snížit náklady na vaše dotazy.

    C. Nechte své dotazy provádět SELECT whatever WHERE timestamp > saved_timestamp ORDER BY timestamp takže nové položky ze svého stolu získáte pouze v pořádku. Pokud váš systém není příliš zaneprázdněn, tyto SELECTy často nevrátí žádné řádky. To je dobře.

    d. Ujistěte se, že máte vícesloupcový index na časovém razítku a ostatních sloupcích v příkazu SELECT. Říká se tomu index pokrytí .

    E. Ihned po otevření připojení k MySQL zadejte tento příkaz SQL. Umožňuje MySQL načítat vaše data s menším konfliktem s ostatními klienty MySQL, kteří do tabulky vkládají řádky.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Pokud to děláte s AJAXem z prohlížečů vašich uživatelů, chcete do požadavků AJAX zahrnout nejnovější časové razítko, abyste mohli doručovat nové potřebné nové položky do prohlížeče každého uživatele.




  1. Místnost pro Android – Jak vymazat sqlite_sequence pro všechny tabulky

  2. Jak mohu ZMĚNIT tabulku PostgreSQL a učinit sloupec jedinečným?

  3. Nelegální kombinace porovnávání pro operaci „concat“

  4. PostgreSQL privilegia a správa uživatelů – co byste měli vědět