Документ WAL, на который вы ссылаетесь, дает подсказку:
Все изменения в файлах данных регистрируются в WAL (так называемый журнал повтора в InnoDB).
Это означает, что WAL и redo log - это два разных термина для одного и того же журнала. Разницы нет.
Буфер журнала - это выделение в ОЗУ. Все записи в журнал повторного выполнения сначала сохраняются в буфере журнала, поскольку некоторые данные очень быстро сохраняются в оперативной памяти. В транзакцию можно было бы внести множество изменений, затрагивающих множество отдельных строк, и запись на диск для каждой из этих строк будет слишком медленной. Поэтому изменения на пути к журналу повторов сначала сохраняются в буфере журналов. Периодически группа изменений в буфере журнала сохраняется на диск в журнале повторов. Это происходит, когда:
- Вы совершаете транзакцию
- Буфер журнала заполнен (буфер журнала имеет фиксированный размер)
- Каждую 1 секунду независимо от того, заполнен ли буфер журнала
Буфер двойной записи имеет совершенно другое назначение. На самом деле это сегмент табличного пространства InnoDB на диске, а не в оперативной памяти (я думаю, что сбивает с толку то, что термин «буфер» используется для хранения как в оперативной памяти, так и на диске).
Цель буфера двойной записи - предотвратить повреждение данных при частичной записи страницы, в то время как измененные страницы копируются из пула буферов innodb в табличное пространство. То есть, если MySQL Server аварийно завершит работу, когда InnoDB записывает данную страницу на диск, он может частично перезаписать страницу на диске. Даже с журналом повторов восстановить эту страницу невозможно.
Таким образом, InnoDB сначала записывает каждую страницу в небольшое подмножество табличного пространства, называемое буфером двойной записи. Как только он закончит запись этой страницы, он может снова сохранить страницу на нужной странице в табличном пространстве. Если это не удается частично, это нормально, потому что страница также была записана в буфер двойной записи. После того, как страница была сохранена в правильном месте в табличном пространстве, копирование этой страницы в буфере двойной записи не требуется, и ее можно перезаписать при следующей очистке страницы из пула буферов.