2012-03-20 9 views
22

Voglio saperne di più sui diversi tipi di serrature Acquisizione di Database Engine.Cosa sono i blocchi di riga, pagina e tabella? E quando vengono acquisiti?

  1. Quali sono
    • blocchi di riga
    • Pagina Serrature Serrature
    • Tabella
  2. Che cosa è una pagina in realtà? Siccome so che "row" rappresenta un record, "table" rappresenta tutti i record in una tabella. Ma cos'è la pagina rispetto ad una tabella?
  3. Quando questi blocchi vengono acquisiti (scenari) dal Motore di database?

Per favore aiutami a capire questi concetti.

+2

Questo è un argomento ampio, quindi è difficile rispondere a domande molto generali senza scrivere risposte molto lunghe. Ma ci sono già molte informazioni a riguardo nella documentazione: http://msdn.microsoft.com/en-us/library/ms190615.aspx Ti suggerisco di iniziare rivedendola, poi torna indietro e fai domande più specifiche su singoli punti che non sono chiari. E poiché questo è un sito di programmazione, potresti ottenere risposte "concettuali" migliori su dba.stackechange.com. – Pondlife

+1

Una ** pagina ** è un blocco fisso di 8K di memoria su disco che contiene dati e indici e tutto il resto. È l'elemento di archiviazione più fondamentale di SQL Server. I dati e gli indici vengono sempre caricati nella memoria di SQL Server in pagine ** complete ** (anche se si desidera leggere un singolo byte, si ottiene una pagina 8k) –

+0

Per i blocchi: vedere [Introduzione al blocco di SQL Server] (http: //www.sqlteam.com/article/introduction-to-locking-in-sql-server) e un gazillion di articoli e post sul blocco (solo google o bing per loro!) –

risposta

30

serratura fila

Un blocco di riga è il più basso livello di granularità di bloccaggio possibile in SQL Server. Ciò significa che una o più righe specifiche verranno bloccate e le righe adiacenti sono ancora disponibili per il blocco da query simultanee.

Pagina Blocco

Un blocco di pagina in SQL Server si blocca 8K vale la pena di dati anche quando la query ha bisogno solo di 10 byte dalla pagina. Quindi la tua query bloccherà i dati aggiuntivi che non richiedi nella tua query.

HOBt Blocco

Quando una tabella è partizionata con "SQL Server Table partitioning" è possibile una partizione singola verrà bloccato (HOBt acronimo di heap o B-Tree)

Nota: Blocco escalation ai blocchi HOBT è disabilitato per impostazione predefinita. eseguire ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO) per abilitare l'escalation del blocco HOBT.

Tabella blocco Bloccare

Una tabella si blocca la tabella completa.

Quali sono le pagine di dati

Microsoft SQL Server organizza tutti i suoi dati in "pagine di dati" che può contenere 8K vale la pena di dati. Ciò significa che per qualsiasi accesso ai dati nelle informazioni di SQL Server 8K verrà letto.

pagine di dati possono contenere solo le informazioni da una tabella e il layout di una pagina è well documented on MSDN

Il fatto che SQL Server sarà sempre leggere una pagina di dati completo anche ti dà un idea del perché si preferisce utilizzare i blocchi a livello di pagina . L'implicazione dei blocchi a livello di pagina è che potresti bloccare molti più dati di quanto pensi.

Ad esempio, si supponga di avere una tabella con una dimensione record totale di 1024 byte con un indice cluster sul campo ID.Quando eseguiamo la seguente query: SELECT * from MyTable (xlock) where ID = 123, non solo quel record verrà bloccato, ma (a seconda del riempimento della pagina) verranno bloccati al massimo 3 record aggiuntivi.

Quando sono questi blocchi acquisiti

Una query verrà analizzata dal regolatore query e dei blocchi necessari sarà determinata e richiesto dal gestore di blocco. SQL Server proverà a creare un equilibrio tra prestazioni e conflitto per determinare la strategia di blocco.

SQL Server segue inoltre un sistema di "escalazione di blocco" che riduce la granularità del blocco quando vengono acquisiti più di 5000 blocchi di un determinato tipo. Vedere this article on lock escalation per ulteriori informazioni.

Questo comportamento può essere ottimizzato usando Hint di blocco con lo stress sul suggerimenti, in una query è possibile specificare per ogni tabella che tipo di serrature si preferisce. SQL Server proverà ad onorare la tua richiesta, ma applicherà comunque l'escalation dei blocchi.

Problemi correlati