Назад | Перейти на главную страницу

Зачем кому-то нужно размещать журнал БД на SSD?

Я все время слышу о людях, которые хотят получить SSD для своих баз данных. Но вместо того, чтобы помещать свои таблицы на SSD, довольно часто люди хотят поместить свой журнал БД на SSD, оставляя свои таблицы на обычных жестких дисках.

Но зачем кому-то это нужно?

Журнал использует последовательные записи. А скорость последовательного ввода-вывода SSD не выше, чем у обычных дисков. Таким образом, размещение журнала на SSD не даст никакого прироста производительности.

Единственная область, в которой SSD намного быстрее обычных дисков, - это случайный ввод-вывод. Так что не стоит ли размещать таблицы на SSD, а журнал оставлять на обычных дисках?

Я что-то упускаю?

Да, журналы транзакций обычно * имеют постоянную, но очень низкую пропускную способность по сравнению со всей базой данных. Но пропускная способность является абсолютно первым приоритетом, когда она задерживается, все обновления базы данных должны ждать. Экономически выгодно записывать журналы на зеркало или даже на RAID5, но только до тех пор, пока вы можете сохранять последовательность операций записи. Если вы разделяете диски с всем остальным, будь то файл данные, индекс, или коллекция порно фильмов, вы ставите работу под угрозой.

В более крупных средах обычно у вас есть множественный экземпляры базы данных, размещенные в одном хранилище. Конечно, вы не хотите складывать журналы вместе на одном и том же наборе дисков, поскольку несколько последовательных операций записи вместе создают одну большую случайную запись.

Один из вариантов - выделить отдельное зеркало (два диска) для каждой последовательности журналов. Но другой вариант - и в некоторых случаях экономически оправданный - это упростить задачу и использовать один SSD для всех файлов журнала, чтобы у вас было отдельное устройство и путь к данным с хорошей случайной производительностью. Фактически, любой из нескольких журналов никогда не задержит ни одну базу данных. Я видел такую ​​установку, но не рекомендую (энергонезависимость SSD для меня слишком хрупкая концепция).

[*] - некоторые движки смешивают журналы повтора с информацией об отмене, чтобы усложнить ситуацию (например, MS SQL Server)

Вы всегда хотите сбрасывать свои журналы в энергонезависимое хранилище (будь то пластины или флэш-память), а твердотельные накопители на основе DRAM могут быть быстрее для записи, чем жесткие диски.

Журналы транзакций почти всегда должны кэшироваться в памяти для повышения производительности, поэтому скорость чтения на самом деле не учитывается.

Таким образом, вы сможете получить более высокую пропускную способность записи, разместив журналы транзакций на SSD.

Кстати, однажды я экспериментировал с помещением журналов транзакций MySQL innodb в tmpfs и получил прирост производительности на 10-20% по сравнению с диском.