Skip to main content
  1. Tecnologie_basi_datis/

Operatori di modifica

·311 words·2 mins· ·
Tecnologie progettazione basi di dati - This article is part of a series.
Part 16: This Article

Le operazioni che scatenano operatori di modifica sono INSERT UPDATE e DELETE ma solo le ultime due necessitano di un percorso di accesso ai dati

Il costo di queste operazioni e diviso in tre componenti:

  • costo di accesso ai dati
  • costo di modifica
  • costo di aggiornamento di indici

Costo di inserimento
#

In caso di inserimento in file non ordinato e necessario considerare il costo di aggiunta in fondo al file e di modifica degli indici:

  • $2*Nindici$ se si fanno le modifiche in maniera indipendente
  • $2*\Phi(KI,L)$ se si ordinano i record per valore di chiave

Costo della eliminazione
#

In caso di eliminazione il costo di modifica dei dati dipende da come si accede ai dati

  • scansione ordinata $\Phi(E,P)$ con $E = f*N$ (fare riferimento a questa sezione )
  • scansione disordinata $EK*\Phi(N/NK,EP)$ con $EK = f*NK$ (in caso di indici un-clustered)

Il costo di modifica conseguente degli indici e stimabile come segue

  • $2*f*N$ se le eliminazioni sono indipendenti
  • $2\Phi(KD,L)$ se si ordinano i record per valore della chiave

Costo dell’aggiornamento: la sindrome di halloween
#

In caso di query di update come segue

UPDATE Somelier
SET livello =livello +1
WHERE livello BETWEEN 3 AND 5

Si hanno situazioni in cui il db aggiorna dei record più volte se viene utilizzato un indice che ha nella chiave l’attributo di modifica

💡 in DB2 il problema di Halloween non si presenta in quanto i RID vengono ordinati e modificati e solo dopo si aggiornano gli indici

I costi sono gli stessi della eliminazione

Update della clustering key
#

In caso di aggiornamenti ai valori della chiave di un indice e necessario preservare l’ordinamento dei dati,

❗ DB2 ci prova ma ammette la presenza di indici più o meno clustered, rendendo necessarie operazioni di riorganizzazione quando il clustering risulta fortemente deteriorato

💡 In un database oracle il clustering dei dati equivale ad usare un

href="/tecnologie_basi_dati/b+tree">b+tree per organizzare i dati e gli altri indici hanno come valori delle foglie dei RID logici (i valori della primary key) che aggiunge un livello di indirezione

Matteo Longhi
Author
Matteo Longhi
I’m a software engineer with a passion for Music, food, dogs, videogames and open source software, i’m currently working as a devops engineer
Tecnologie progettazione basi di dati - This article is part of a series.
Part 16: This Article