Базы данных, которые используют диск для постоянного хранения, действительно должны записывать на диск, чтобы сделать транзакцию долговременной.Кроме того, они также должны синхронизироваться с диском, чтобы избежать потерь из кэша обратной записи.
Для достижения высокой производительности базы данных будут использовать групповые фиксации, в результате чего несколько транзакций в цикле фиксации будут использовать одну и ту же операцию записи / синхронизации, чтобы сделать все транзакции долговечными.Это возможно, когда все они добавляются в один и тот же журнал транзакций.
Это может означать, что ответ отдельной фиксации может быть отложен (при ожидании присоединения других к циклу фиксации), но общая пропускная способность намного выше по всей базе данных, потому что стоимость записи / синхронизацииамортизируется через несколько транзакций.Например, каждая отдельная транзакция может занять 10 мс, но тысячи транзакций могут быть зафиксированы в одном цикле.
Для базы данных является нормальным измерять, сколько транзакций активно, чтобы определить, стоит ли заставлять какую-либо одну транзакцию ждать, пока другие присоединятся к циклу фиксации, так что в очень слегка загруженной системе транзакция не требуется.ждите других.
Не все базы данных используют диск, чтобы гарантировать долговечность.Например, VoltDB полагается на копии транзакции, хранящейся в памяти на нескольких серверах.Если один из серверов умирает, транзакция все еще доступна в другом месте.Следовательно, транзакция должна только гарантировать, что транзакция будет передана достаточному количеству серверов для обеспечения долговечности.
Это также поднимает вопрос о том, что является долговечным?Надежен ли один диск?Нет, если диск выходит из строя.Является ли массив RAID долговечным?Нет, если есть катастрофическое повреждение RAID.Единственная гарантия долговечности - это когда транзакции реплицируются в нескольких удаленных экземплярах базы данных, но не всем нужен такой уровень гарантии.Долговечность следует рассматривать не как бинарный вариант, а как выбор уровня долговечности.