Scrive rapidamente le voci del registro da richieste HTTP in un database MySQL ad alte prestazioni

0

Quando un set di dati viene salvato nel software che utilizzo, viene attivata una richiesta http (fire-and-forget). Informazioni come il timestamp, l'utente e le modifiche apportate sono elencate nei parametri GET.

Ora ho bisogno di scrivere un'applicazione in grado di prendere migliaia di richieste al minuto e scriverle in un database MySQL.

Penso che un server web Apache con PHP sia troppo lento per gestirlo.

Che cosa utilizzo invece? Che dire di un server Web Java? Qualcuno può consigliare una soluzione per questo?

    
posta halloei 07.01.2015 - 17:00
fonte

1 risposta

2

Le prime 3 cose che devi fare sono profilo , profilo e, naturalmente, profilo .

Stai provando a risolvere un problema che non sai che hai in realtà. Sebbene sia utile cercare di anticipare i problemi, ci vuole molta esperienza con i database per essere in grado di "sentirli" in modo accurato.

Configura uno script di test - sembra che dovrebbero essere solo alcune righe di codice - e inserisci alcune milioni di voci nella tabella di log come farebbe la tua applicazione. Guarda quanto tempo ci vuole. Se il tempismo è accettabile ... non devi fare nulla.

Se i tempi sono troppo lenti, ora inizia l'ottimizzazione. Cose da guardare:

  • Utilizza ISAM anziché InnoDB per il motore di archiviazione della tabella.
  • Assicurati di non avere molti indici sulla tabella, che rallenti le scritture.
  • O forse prova una tabella MEMORY.
  • Prova a utilizzare INSERT DELAYED che manterrà gli inserti fino a quando la tabella non sarà scrivibile, ma non bloccherà la tua applicazione.

Se ritieni che sia troppo lento, allora è tempo di iniziare a prendere in considerazione altre opzioni.

    
risposta data 07.01.2015 - 18:26
fonte

Leggi altre domande sui tag