O principal problema da otimização de qualquer coisa para SSDs tem a ver com a forma como eles escrevem dados. Um disco rígido tradicional normalmente armazena dados em pequenos setores de cerca de 512 bytes e pode realmente manipular setores diretamente nesse nível ou mesmo abaixo desse nível.
Os SSDs têm algumas desvantagens em relação às gravações:
- Um tamanho mínimo de gravação de bloco de cerca de 4-8 KB.
- As gravações só podem ser executadas em uma página inteira, normalmente de 256 KB.
- Somente blocos vazios podem ser gravados.
Um cenário típico de pesadelo, conhecido como amplificação de gravação , é quando você deseja gravar um único byte em um local no disco que tenha alguns blocos já em uso. Para escrever lá, você precisa primeiro copiar a página inteira de 256 KB na memória, apagar o bloco inteiro, alterar o byte único na página e depois gravar novamente a página inteira de 256 KB modificada. Então, para escrever um único byte, houve cerca de meio megabyte de "tráfego"!
Existem muitas otimizações para esse problema implementadas no nível de SSD, controlador e até sistema operacional, mas, sem dúvida, os DBMSs podem se beneficiar adaptando essas otimizações ao seu trabalho específico.
No entanto, isso não é algo que os usuários de banco de dados (como em usar um banco de dados em seu aplicativo) precisam pensar, pois dependerão muito das decisões de design / implementação no nível do DBMS.