Основна проблема оптимізації будь-якого для SSD-дисків пов'язана з тим, як вони записують дані. Традиційний жорсткий диск, як правило, зберігає дані в невеликих секторах близько 512 байт і може фактично маніпулювати секторами безпосередньо на рівні або навіть нижче.
SSD мають деякі недоліки щодо записів:
- Мінімальний розмір запису в блоці близько 4-8 КБ.
- Записи можна виконувати лише на основі повної сторінки, яка зазвичай становить 256 КБ.
- На них можна записувати лише порожні блоки.
Типовий сценарій кошмару, який називається посиленням запису , - це коли ви хочете записати один байт у місце розташування на диску, у якому вже є деякі блоки. Для того, щоб записати туди, потрібно спершу скопіювати всю пам'ять у 256 КБ в пам'ять, стерти весь блок, змінити один байт на сторінці, а потім записати всю змінену сторінку 256 КБ. Тож для того, щоб написати єдиний байт, було близько половини мегабайт "трафіку"!
Існує маса оптимізацій для цієї проблеми, реалізованих на рівні SSD, контролера та навіть операційної системи, але, безсумнівно, СУБД можуть отримати користь, адаптувавши ці оптимізації до їх конкретної роботи.
Однак це не те, про що потрібно думати користувачам бази даних (як, наприклад, використання бази даних у їх застосуванні), оскільки це буде сильно залежати від рішень щодо проектування / впровадження на рівні СУБД.