Perché a livello di tabella chiudendo meglio di blocco a livello di riga per tabelle di grandi dimensioni?

StackOverflow https://stackoverflow.com/questions/3462643

  •  27-09-2019
  •  | 
  •  

Domanda

Secondo il MySQL manuale :

  

Per grandi tabelle bloccaggio tabella è spesso migliori di bloccaggio riga,

Perché è questo? Vorrei Presumo che il blocco a livello di riga è meglio perché quando si blocca su un tavolo più grande, si sta bloccando più dati.

È stato utile?

Soluzione

dal (pre-edit) link

  

Più lento di livello di pagina o a livello di tabella si blocca quando viene utilizzato su gran parte del tavolo perché è necessario acquisire molte più blocchi

utilizzare un blocco a livello di riga se si è solo colpendo una riga o due. Se il codice colpisce molti o sconosciute righe, bastone con blocco di tabella.

Altri suggerimenti

  • bloccaggio fila richiede più memoria di tabella o livello di pagina di blocco.

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

http://www.devshed.com/ c / a / MySQL / MySQL-ottimizzazione-parte-2 /

  • Vantaggi di blocco a livello di riga:

    • Meno conflitti di blocco quando si accede righe diverse in molti fili.
    • minor numero di sostituzioni per i ripristini.
    • Permette di bloccare una singola riga lungo tempo.
  • Svantaggi di blocco a livello di riga:

    • prende più memoria rispetto a livello di pagina o a livello di tabella serrature.
    • è più lento rispetto a livello di pagina o a livello di tabella si blocca quando viene utilizzato su gran parte del tavolo perché è necessario acquisire molte più serrature.
    • è sicuramente molto peggio di altre serrature se spesso fai GROUP BY operazioni su larga parte dei dati o se è spesso necessario eseguire la scansione dell'intera tabella.
    • Con i blocchi a livello alto, si può anche facilmente sostenere serrature di tipo diverso per regolare l'applicazione, perché la serratura sovraccarico è inferiore a blocchi a livello di riga.
  • blocchi di tabella sono superiori a livello di pagina o al livello di riga serrature 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 recuperata con una sola chiave leggere: UPDATE tbl_name SET column=value WHERE unique_key_col=key_value; DELETE FROM tbl_name WHERE unique_key_col=key_value;
    • Seleziona combinato con dichiarazioni concorrenti Inserisci e pochissimi UPDATE e DELETE.
    • Molti scansioni o un gruppo le operazioni su tutto il tavolo, senza alcuna scrittori.

A riga serratura livello Tabella è migliore per un grande tavolo dove importanti modifiche di dati sono in corso. Questo permette al sistema di conti con un singolo blocco sul tavolo piuttosto che avere a che fare con le serrature gazillion (uno per ogni riga).

I RDBMS automaticamente intensifica livelli bloccaggio internamente.

  

bloccaggio Tabella consente numerose sessioni di leggere da una tabella contemporaneamente

     

Per ottenere una velocità molto elevata serratura, MySQL utilizza il blocco tabella

"Io pretendo che il blocco a livello di riga è meglio perché" [si blocca meno di dati].

Per prima cosa "migliore" è scarsamente definito in questa pagina. Sembra che i mezzi migliori "più veloce".

blocco a livello di riga non può (in generale) è più veloce perché di contesa per serrature. Bloccaggio ciascuna riga di un grande insieme risultato significa la reale possibilità di un conflitto con un altro grande interrogazione set di risultati e un ripristino.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top