2010-08-11 7 views

risposta

17

dal (pre-edit) link

più lento livello di pagina o blocchi a livello di tabella quando utilizzato su una grande parte della tabella perché si deve acquisire molte più serrature

utilizzare un blocco livello di riga se sei solo colpendo una riga o due. Se il tuo codice colpisce molte o sconosciute righe, rimani con il blocco del tavolo.

+4

Vedo. Quindi forse sarebbe meglio se fosse più simile a "per i grandi set di risultati, il blocco delle tabelle è spesso meglio del blocco di riga". –

0

A riga Il blocco del livello di tabella è migliore per un grande tavolo in cui sono in corso modifiche importanti dei dati. Ciò consente al sistema di contendersi con un singolo blocco sul tavolo invece di dover gestire un blocco di gazillion (uno per ogni riga).

RDBMS aumenta automaticamente i livelli di blocco internamente.

+0

Penso che tu intenda "Un blocco del tavolo è meglio ....." – SQLMenace

+0

Penso che tu intenda "Un blocco riga è meglio ...": P –

+0

* (sorrisetto imbarazzato) * sì, volevo dire Tavolo .. –

0

In generale, se avete bisogno di bloccare un sacco di dati poi 1 blocco su un grande tavolo è più economico di un intero gruppo di livello di riga o di blocchi di pagina

15
  • Il blocco di riga richiede più memoria rispetto al blocco a livello di tabella o di pagina.

  • necessario acquisire molte altre serrature con bloccaggio fila, che consuma più risorse

Da http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/

  • Vantaggi di blocco a livello di riga:

    • Meno blocco conflitti quando si accede a file differenti in molti thread.
    • Meno modifiche per i rollback.
    • Consente di bloccare una singola riga per un lungo periodo.
  • Svantaggi di blocco a livello di riga:

    • ritiene più memoria del livello di pagina o blocchi a livello di tabella.
    • È più lento dei blocchi a livello di pagina o a livello di tabella quando utilizzato su gran parte della tabella perché è necessario acquisire molti più blocchi.
    • È decisamente peggio di altri blocchi se si eseguono spesso operazioni GROUP BY su gran parte dei dati o se si deve spesso eseguire la scansione dell'intera tabella.
    • Con i blocchi di livello superiore, è anche possibile supportare più facilmente blocchi di tipi diversi per ottimizzare l'applicazione, poiché l'overhead del blocco è inferiore rispetto ai blocchi a livello di riga.
  • blocchi di tabella sono superiori a livello di pagina o di blocchi a livello di riga nei seguenti casi:

    • La maggior parte delle dichiarazioni per la tavola sono legge.
    • Leggere e aggiornamenti sulle chiavi rigide, dove aggiornare o eliminare una riga che può essere recuperato con una sola lettura chiave: UPDATE tbl_name SET column=value WHERE unique_key_col=key_value; DELETE FROM tbl_name WHERE unique_key_col=key_value;
    • selezionare combinato con dichiarazioni concorrenti Inserisci e pochissimi UPDATE e DELETE.
    • Numerose scansioni o operazioni GROUP BY sull'intera tabella senza scrittori.
1

bloccaggio Tabella consente numerose sessioni di leggere da una tabella contemporaneamente

Per ottenere una velocità di bloccaggio molto elevata, MySQL utilizza la tabella di bloccaggio

"avrei supponiamo che il blocco a livello di riga sia migliore perché "[blocchi meno dati].

Primo "migliore" è scarsamente definito in questa pagina. Sembra che migliori significhi "più veloce".

Il blocco a livello di riga non può (in generale) essere più veloce a causa della contesa per i blocchi. Il blocco di ogni riga di un set di risultati di grandi dimensioni indica la possibilità molto reale di un conflitto con un'altra query di set di risultati di grandi dimensioni e un rollback.

Problemi correlati