L'esecuzione della query "" non è riuscita con il seguente errore: "L'indice" "(partizione 1) sulla tabella" "non può essere riorganizzato perché il blocco a livello di pagina è disabilitato."
Il piano di manutenzione deve tentare di RIORGANIZZARE ALTER INDEX, che è un'operazione online. Per rimuovere la frammentazione (pagine non in ordine), le pagine devono essere bloccate e spostate, il che non è possibile se i blocchi delle pagine sono stati disabilitati. L'unico modo per deframmentare senza i blocchi di pagina è bloccare l'intera partizione, il che non è possibile per REORGANIZE come solo online.
Qual è la differenza tra i due schemi di blocco e quali sono le loro conseguenze nel mondo reale (in produzione)?
È necessario capire quali sono un record e una pagina per valutare l'impatto della mancata accettazione di un determinato tipo di blocco. Se non si ha familiarità con gli interni di archiviazione di SQL Server, iniziare con Anatomy of a Record e Anatomy of a Page . In parole povere:
- righe = record
- le righe sono memorizzate in pagine di 8kb
Se dovessi modificare i tipi di blocco consentiti:
- Disabilita blocchi pagina = Solo blocchi riga e tabella
- Disabilita blocchi riga = Solo blocchi pagina e tabella
- Disabilita entrambi = Solo blocchi tabella
Esistono due scenari di cui sono a conoscenza in cui può essere utile non consentire un tipo di blocco. Ciò non significa che non ce ne siano altri, speriamo che qualcun altro intervenga con degli esempi.
Una tabella di ricerca a cui si accede di frequente, che cambia di rado : disabilitando i blocchi a livello di pagina e di riga, tutti i lettori accetteranno un blocco di tabella condiviso. Questo è più veloce / più economico rispetto al solito intento condiviso sulla tabella, seguito da intento condiviso su una pagina e infine un blocco condiviso su una o più righe specifiche.
Prevenzione di uno scenario di deadlock specifico : se si verificano deadlock causati da processi simultanei che acquisiscono blocchi che si trovano spesso nella stessa pagina, la disattivazione dei blocchi di riga comporta invece l'esecuzione di blocchi di pagine. Solo un processo può quindi accedere alla pagina alla volta, l'altro deve attendere.
Il primo esempio è la micro-ottimizzazione e difficilmente produrrà benefici misurabili su un sistema tipico. Il secondo risolverà quel particolare scenario di deadlock ma potrebbe introdurre effetti collaterali imprevisti, ad esempio uccidere la concorrenza in una diversa sezione di codice. Difficile valutare completamente l'impatto, avvicinarsi con cautela!
L'impostazione predefinita è l'abilitazione di entrambi e ciò non deve essere modificato senza una buona causa.