Optimizarea bazelor de date pentru „Flash Sales”

Configurare noua (How To)

Situatie

Când traficul crește de 100 de ori într-o secundă, baza de date este prima care cedează. Iată cum se pregătește infrastructura pentru a evita eroarea “504 Gateway Timeout”.

Solutie

Cum se implementează:
  1. Identificarea interogărilor lente (Slow Query Log):
    • Înainte de eveniment, activează în MySQL/PostgreSQL logarea interogărilor care durează mai mult de 1 secundă.
    • Folosește comanda EXPLAIN în fața interogărilor SQL pentru a vedea dacă baza de date scanează tot tabelul sau folosește un index.
  2. Strategia de Caching cu Redis:
    • Ce faci: Nu lăsa site-ul să ceară prețul și descrierea produsului din baza de date la fiecare vizită.
    • Implementare: Stochează obiectul „Produs” într-o bază de date în memorie (Redis). Când un utilizator accesează pagina, codul verifică întâi în Redis. Dacă există acolo (cache hit), livrarea este instantanee (sub 10ms).
  3. Implementarea de Read Replicas:
    • Cum funcționează: Configurezi un server „Master” unde se scriu comenzile și 2-3 servere „Slave” care doar citesc datele.
    • Configurare: În fișierul de configurare al aplicației (ex. .env în Laravel sau Node.js), separi conexiunile: DB_HOST_READ și DB_HOST_WRITE.
  4. Connection Polling:
    • Folosește un instrument precum PgBouncer (pentru Postgres) pentru a gestiona mii de conexiuni simultane fără a epuiza memoria RAM a serverului.

Tip solutie

Permanent

Voteaza

(4 din 6 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?