Conta una riga VS Salva il conteggio delle righe dopo ogni aggiornamento

0

Voglio sapere se salvare il conteggio delle righe in una tabella è meglio che contarlo ogni volta che si procede.

Esempio rapido: un visitatore va al Gruppo Clan, la pagina mostra le informazioni del clan e i Membri che si sono uniti al gruppo, Se la pagina cerca tutti gli utenti che hanno aderito al clan e li contano, o mostra solo il numero di membri già salvato nella tabella?

Penso che il primo non sia possibile manipolarlo ma IT MIGHT costi le prestazioni

Le tue idee?

    
posta SAFAD 01.11.2011 - 08:55
fonte

4 risposte

1

stai ottimizzando la cosa sbagliata :), la tua pagina di gruppo non è molto suscettibile di modifiche, quindi quello che vuoi veramente è memorizzare nella cache l'html-output completo e restituire la pagina del tuo gruppo dalla cache che porta a zero db round- inciampa e quindi guadagna molto più prestazioni di una db-query ottimizzata

    
risposta data 01.12.2011 - 10:45
fonte
0

È possibile utilizzare una vista per restituire il conteggio. A seconda del DB, i risultati della vista possono essere memorizzati nella cache fino a quando le tabelle partecipanti cambiano, risultando in efficienza. Ma assicurati che i risultati siano memorizzati nella cache e che gli indici siano mantenuti anche sulle visualizzazioni. Memorizzare un conteggio significa aggiornarlo ogni volta che si scrive sulla / e tabella / i. Consulta questo thread .

    
risposta data 01.11.2011 - 09:02
fonte
0

Il salvataggio del conteggio delle righe sarà "più veloce", ma potrebbe causare altri problemi. Devi assicurarti che l'aggiornamento sia completamente atomico e non faccia parte di un'unità di lavoro più grande, altrimenti sarai tormentato da deadlock e timeout quando il tuo sito diventa anche moderatamente occupato.

Per "completamente atomico" intendo che devi " BEGIN; " seguito immediatamente da " UPDATE YOURTABLE SET CNT = CNT + 1; " seguito immediatamente da " COMMIT; "

    
risposta data 01.11.2011 - 09:42
fonte
0

Suggerisco quanto segue: - Non visualizzare i dati se non è accurato. - Se si è preoccupati per le prestazioni, visualizzare le informazioni accurate solo in base alla richiesta - Ci sono modi per ottenere conteggi accurati a buon mercato, ad esempio, considerare uno di questi approcci:

1 - La funzione Count può essere eseguita contro i metadati del database e non conta le righe (a seconda del database)

2 - Usa il concetto di Vista materializzata (come in Oracle) (chiamata Vista indicizzata in SQL Server). Anche se MySQL non supporta direttamente questo, può essere simulato - Vedi questo: MySQL-Simula viste materializzate

    
risposta data 01.12.2011 - 11:03
fonte

Leggi altre domande sui tag