La modellazione fisica dei dati consiste nell'implementare il modello logico in tabelle reali, concentrandosi sull'efficienza dello spazio di archiviazione, il partizionamento e la progettazione degli indici per l'ottimizzazione delle prestazioni.
Le query lente, gli indici e la cache vengono utilizzati per risolvere i problemi di prestazioni e, se necessario, la struttura della tabella viene modificata tramite denormalizzazione.
La normalizzazione può sacrificare le prestazioni di lettura per facilitare la scrittura, quindi la denormalizzazione deve essere eseguita con attenzione dopo aver identificato il problema.
Se la modellazione logica dei dati consisteva nel creare tabelle ideali adatte a un database relazionale, la modellazione fisica dei dati comprende l'attività di trasformare le tabelle ideali in tabelle utilizzabili nella pratica, considerando in modo prioritario il miglioramento delle prestazioni e l'ottimizzazione, tra cui la pianificazione efficiente dello spazio di archiviazione, la progettazione della partizione degli oggetti e la progettazione di indici ottimali.
Il modo in cui si trovano le query lente (slow query) che causano colli di bottiglia durante il funzionamento del servizio varia a seconda del tipo di DBMS equery lentedeve essere cercato utilizzando questa parola chiave.
Aspetti da considerare per le prestazioni
Ricerca di query lente (Slow Query)
Una query lenta è una query che il DBMS non riesce a eseguire entro un certo periodo di tempo dopo averla ricevuta.
Trova le query lente che causano colli di bottiglia, individua il problema e risolvilo.
Indice (Index)
L'indice migliora drasticamente le prestazioni di lettura per le righe.
Tuttavia, riduce le prestazioni di scrittura e utilizza più spazio di archiviazione.
Cache
Un modo per ridurre il carico sul database a livello di applicazione
È un metodo che memorizza le risposte alle richieste con lo stesso input nello spazio di archiviazione e le restituisce.
Se il problema delle prestazioni non viene risolto con i metodi sopra descritti, viene eseguita un'operazione denominata denormalizzazione o reverse normalization.
Si tratta di modificare la struttura della tabella.
Trade-off della normalizzazione
La normalizzazione è come sacrificare le prestazioni di lettura per la comodità delle operazioni di scrittura. Quando si esegue la normalizzazione, è necessario scrivere una query di join per i dati delle tabelle suddivise in più parti.
Tuttavia, la normalizzazione non riduce necessariamente le prestazioni, quindi è necessario identificare e esaminare correttamente il problema prima di procedere alla denormalizzazione.
Il link qui sotto è un buon articolo che tratta ladenormalizzazioneche verrà trattata in seguito.
La prima cosa da ricordare è che la denormalizzazione deve essere eseguita dopo aver eseguito la normalizzazione. Una tabella non normalizzata fin dall'inizio non è sempre una buona cosa.
Per ora, non è una conoscenza che ci serve immediatamente, quindi la prenderemo solo come nota.
Tecniche di denormalizzazione delle tabelle
Fonte - DataOnAir - Denormalizzazione e prestazioni
Denormalizzazione delle colonne
Fonte DataOnAir - Denormalizzazione e prestazioni
Denormalizzazione delle relazioni
Fonte - DataOnAir - Denormalizzazione e prestazioni