Il problema principale con l'ottimizzazione di qualsiasi cosa per SSD ha a che fare con il modo in cui scrivono i dati. Un disco rigido tradizionale in genere memorizza i dati in piccoli settori di circa 512 byte e può effettivamente manipolare i settori direttamente o anche al di sotto di tale livello.
Gli SSD hanno alcuni svantaggi per quanto riguarda le scritture:
- Una dimensione minima di scrittura del blocco di circa 4-8 KB.
- Le scritture possono essere eseguite solo su una pagina intera, in genere a 256 KB.
- È possibile scrivere solo blocchi vuoti.
Uno scenario da incubo tipico, denominato Scrivi amplificazione , è quando vuoi scrivere un singolo byte in una posizione su disco con alcuni blocchi già in uso. Per scrivere lì, è necessario prima copiare l'intera pagina da 256 KB in memoria, cancellare l'intero blocco, modificare il singolo byte nella pagina, quindi riscrivere l'intera pagina modificata da 256 KB. Quindi, per scrivere un singolo byte, c'è stato circa mezzo megabyte di "traffico"!
Esistono molte ottimizzazioni per questo problema implementato a livello di SSD, controller e persino a livello di sistema operativo, ma indubbiamente i DBMS possono trarre beneficio personalizzando queste ottimizzazioni per il loro funzionamento specifico.
Tuttavia, questo non è qualcosa a cui gli utenti del database (come in, usando un database nella loro applicazione) devono riflettere, poiché sarà altamente dipendente dalle decisioni di progettazione / implementazione a livello di DBMS.