Domanda

Utilizzando SQL Server 2008 R2, la tabella transazionale principale in un database dei fornitori è enorme rispetto a tutti gli altri e ha circa 14 indici. Alcuni di questi indici non vengono utilizzati nel nostro ambiente, ma non possiamo rimuoverli. Non è un problema, è solo qualcosa con cui dobbiamo convivere.

La domanda che ho è sul perché alcuni di questi indici bassi o non letti sembrano usare la memoria, più di altri indici sulla stessa tavola grande che vengono utilizzate spesso. Avrei pensato che la maggior parte della cache del buffer sarebbe andato verso oggetti che vengono letti frequentemente. L'unica cosa che sta accadendo su questi indici è scrivere in alto.

Ad esempio, uno di questi indici a lettura bassa viene assegnato circa 2 GB di memoria (58% della dimensione totale dell'indice) e un altro ha 1,7 GB di memoria (27% delle sue dimensioni). Nel frattempo, l'indice cluster di dimensioni mostruose e ben utilizzata ha solo 4 concerti (2% delle sue dimensioni). Un indice NC diverso con molte letture ha solo 100 MB nella cache del buffer (5% delle sue dimensioni).

Guardando le statistiche fisiche, posso vedere che la frammentazione è piuttosto negativa. Ciò è comprensibile da tutte le scritture su questa tabella e dagli inserti non sequenziali. Tuttavia, non sono sicuro che possa essere correlato all'utilizzo della memoria.

Anche guardare le statistiche operative per questi indici è interessante.

  • Leaf_ghost_count mi ricorda che ci sono quasi tanti cancellazioni che si svolgono su questa tabella quanto ci sono inserti (da un normale processo di pulizia).
  • Uno di questi indici a bassa lettura ha alcuni dei valori PAGE_LOCK_WAIT più alti nel database. Forse è solo a causa delle scritture?
  • 2 altri hanno alcuni dei valori Page_Latch_Wait più alti. Capisco che l'utilizzo del fermo sarebbe correlato all'uso della memoria, quindi ha senso.

Mi rendo conto che questa è una domanda astratta e che non sto fornendo molte statistiche reali. Sono solo curioso di sapere come SQL Server arriva a queste decisioni di utilizzo della cache del buffer e mi chiedo se qualcuno là fuori lo capisca.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top