come lo stoccaggio è riservata da SQL Server? e come annullare esso?
-
04-10-2019 - |
Domanda
Sto cercando di understnad come alloca e riserve di SQL Server spazio.
Dopo aver eseguito gli esempi l'articolo "Come disegno tabella può influire sulla prestazione di SQL Server?" [1], ho ricevuto i risultati [My 1.1] deviare da quelli di cui all'articolo [1.1].
Perché?
Perché in un caso lo spazio eccessivo è riservato / assegnati (tutti i casi in [1]), ma non in un altro [My 1.1]?
(Si noti che in [1] in entrambi i casi l'eccessivo spazio è riservato, anche se sul mio computer solo in uno dei casi)
Come è spazio assegnato, riservato da SQL Server?
E come posso controllare / gestirlo?
[1] ======
Come design del tavolo può influire le prestazioni di SQL Server?
http://sqlserver-training.com/ how-table-design-can-impatto-your-sql-server-prestazioni
[My 1.1]
I miei risultati deviare da [1] sotto
name rows reserved data index_size unused
---------------------------------- ----- --------- -------- ----------- ---------
Fixed_Lenght_Row_Table_Optimised 10000 40008 KB 40000 KB 8 KB 0 KB
[1.1] Risultati in [1] deviando dalla mia sopra
name rows reserved data index_size unused
---------------------------------- ----- --------- -------- ----------- ---------
Fixed_Lenght_Row_Table_Optimised 10000 40072 KB 40000 KB 8 KB 64 KB
[1.2]
I risultati di [1] in coincidenza con la mia
name rows reserved data index_size unused
---------------------------------- ----- --------- -------- ----------- ---------
Fixed_Lenght_Row_Table_Non_Optimised 10000 80072 KB 80000 KB 8 KB 64 KB
Soluzione
L'articolo del collegamento è dubbia nel migliore dei casi. Non specificare quale versione di SQL Server per l'uso, e quali sono le varie opzioni abilitati / disabilitati. Dal momento che SQL Server 2005 non c'è fila di storage di piccole pallonetto per le colonne oltre rovesciando il limite 8K (vedi di tabelle e indici Organizzazione ), ci sono di default contro in fila fuori-di-fila opzioni (vedere sp_tableoption ) e ci sono molte opzioni di compressione ( a livello di riga , a livello di pagina , Unicode ).
Per informazioni accurate vorrei bastone alla documentazione ufficiale del prodotto, a partire dalla Planning e architettura (motore di database) . Per una lettura più digeribile, acquistare uno dei libri ben consolidati, come Microsoft SQL Server 2008 Internals o Inside Microsoft SQL Server 2005:. Il motore di archiviazione
Altri suggerimenti
Ha senso: hai 64k spazio inutilizzato. Si vedono spesso piccole differenze di spazio riservato come questo
Mi piacerebbe anche farlo funzionare in questo modo anche con il 2 ° parametro. Può fare alcuna differenza
EXEC [sp_spaceused][1] 'Fixed_Lenght_Row_Table_Non-Optimised', 'true'
E poi da sp_spaceused
Quando si rilascia o ricostruire grande indici, o goccia o troncare grandi tavoli, il Motore di database posticipa la deallocazioni pagina reali, e la loro blocchi associati, fino a dopo la commit di transazione. goccia differite operazioni non rilasciano allocati spazio immediatamente. quindi, il valori restituiti dalla sp_spaceused subito dopo la caduta o troncare un grande oggetto non può riflettere l'effettivo spazio su disco a disposizione. Per ulteriori informazioni su allocazioni differita, vedere Cadute e Ricostruire oggetti di grandi dimensioni.
Infine, avrete tabelle che avranno 4000 byte + righe? Se si desidera ignorare per ottimizzare, mi piacerebbe dire che sei prematuro ... basta fare l'implementazione del progetto è corretto (sono fasi distinte)