AWS Aurora: come funziona la cache
Quando abbiamo parlato dei costi, abbiamo fatto presente come lo storage, il tipo di istanza e anche l’I/O influenzino il costo: ma come funziona la cache dei dati, e come ci permette di risparmiare sulla fattura?
Scopriamo il funzionamento del buffer pool.
Cosa vedrai
Cos’è il buffer pool
Il buffer pool di Aurora memorizza i dati richiesti dalle query sotto forma di pagine di dati. In altre parole, è il meccanismo di cache con cui il database memorizza le informazioni che sono state recuperate dopo l’esecuzione della query fornita dall’utente.
Come funziona
In Aurora, i dati vengono memorizzati su disco sotto forma di pagine di dati. Una pagina di dati è un blocco di memoria di dimensioni fisse (in genere 16 KB) che contiene una o più righe da una tabella o un indice.
Il buffer pool è una regione di memoria allocata dal motore del database per memorizzare nella cache le pagine di dati. È strutturato come un elenco collegato di pagine di dati, con ogni pagina contenente un’intestazione e i dati effettivi.
Aurora utilizza un algoritmo LRU (abbreviazione di Least Recently Used) per gestire il buffer pool. Quando viene richiesta una pagina di dati, Aurora verifica prima se è già nel buffer pool. In caso contrario, legge la pagina dal disco e la aggiunge al buffer pool, potenzialmente “rimuovendo” la pagina meno utilizzata di recente se il buffer pool è pieno.
Ogni pagina di dati nel buffer pool ha metadati associati, come la tabella e l’indice a cui appartiene, il numero di pagina e informazioni riguardo lo stato della pagina, ossia se questa è stata modificata o meno.
Infatti, quando una query modifica i dati nel buffer pool, le pagine corrispondenti vengono contrassegnate come “sporche”. Queste pagine sporche vengono rimosse dal disco scrivendo le modifiche nel livello di archiviazione, garantendo la durabilità dei dati.
Memorizzando nella cache le pagine di dati a cui si accede di frequente nel buffer pool, Aurora può ridurre significativamente la necessità di costose operazioni di I/O su disco, migliorando anche le prestazioni della query. Tra l’altro, l’algoritmo LRU assicura che i dati utilizzati più di frequente rimangano nel buffer pool, mentre i dati utilizzati meno di frequente vengono espulsi per fare spazio a nuove pagine.
È importante notare che la dimensione del buffer pool è configurabile e che scegliere una dimensione appropriata è fondamentale per avere delle prestazioni ottimali. Un buffer pool troppo piccolo può portare a frequenti “pulizie” di dati e a un aumento dell’I/O del disco, mentre un buffer pool troppo grande può sprecare risorse di memoria.
E i costi?
Per i costi, oltre a rimandare al calcolatore dei prezzi di AWS che è lo strumento più adatto e aggiornato, i fattori principali che influenzano il costo di un database Amazon Aurora sono, complessivamente:
Tipo di istanza del database: i prezzi si basano sul tipo di istanza del database scelta, ad esempio Serverless, Provisioned o Reserved Instances. Le istanze più potenti con maggiore capacità di elaborazione e memoria costeranno di più.
Utilizzo dello storage: ti verrà addebitata la quantità di storage allocata per il tuo cluster di database Aurora, misurata in GB-mese.
Backup: qualsiasi backup storage utilizzato per archiviare backup automatici e snapshot manuali del database ha un costo.
Trasferimento dati: potrebbero essere applicati costi per il trasferimento dati fuori dal cloud AWS, a seconda della quantità di dati trasferiti.
Inoltre, l’utilizzo di funzionalità avanzate come Aurora Global Database, Aurora Multi-Master o Aurora Parallel Query può comportare ancora costi aggiuntivi.
Per ottimizzare i costi, puoi scegliere la configurazione Aurora I/O-Optimized, che elimina i costi separati per le operazioni I/O e fornisce prezzi più prevedibili per carichi di lavoro I/O intensivi: in pratica, paghi solo per le istanze del database e lo storage utilizzato.