О пробивании файла в Mysql, когда и как он сообщает об ошибке «не осталось места»?

Я изучил механизм сжатия Mysql, который использует функцию пробивки отверстий современной файловой системы в качестве официального документа здесь.

Что мне интересно, так это то, как Mysql обрабатывает при записи в дыры, но не остается физического блока?

Например, когда Mysql записывает страницу размером 16 КБ, он сжимает ее до 3 КБ, для чего требуется один блок файловой системы 4 КБ. При сохранении страница 16 КБ по-прежнему занимает адресное пространство файловой системы 16 КБ, которое будет учитываться в команде 'ls', в то время как выделяется только один физический блок размером 4 КБ, который будет рассматриваться в команде "du". Остальные 12 КБ фактически перфорированы и не требуют блоков реальной файловой системы. После этого возможно, что свободные блоки файловой системы исчерпаны. В это время страница размером 16 КБ загружается, обновляется и повторно сжимается, скажем, до 5 КБ, для чего теперь требуется 2 блока файловой системы. Пока второй блок является дырчатым, ему нужно будет выделить новый блок при сбросе на диск. Однако в файловой системе нет блока для выделения, поэтому файловая система сообщит об ошибке «нет места». Как Mysql обработает такую ​​ошибку?

0 ответов

Другие вопросы по тегам