Почему при выполнении операции ALTER TABLE все равно используется основной диск, даже если данные MySQL перемещены на другой диск?

Почему при выполнении операции alter table на таблице размером в 18 ГБ используется системный диск, когда база данных MySQL находится в другом каталоге (/var/lib/mysql)? Вот вывод команд df -h и du -had1 -x /, выполненных в середине процесса alter table.

```
df -h:
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs            48G     0   48G   0% /dev/shm
tmpfs            19G  8.9M   19G   1% /run
/dev/sdb4        50G   13G   37G  27% /
/dev/sda        1.2T  1.1T  162G  87% /var/lib/mysql
/dev/sdb3       507M  198M  310M  40% /boot
/dev/sdb2       200M  7.1M  193M   4% /boot/efi
tmpfs           9.5G     0  9.5G   0% /run/user/0
tmpfs           9.5G     0  9.5G   0% /run/user/1000

du -had1 -x /:
100K	/tmp
24M	/etc
100K	/root
384M	/var
1.9G	/usr
0	/bin
0	/sbin
0	/lib
0	/lib64
0	/afs
168K	/home
0	/media
316M	/mnt
8.0K	/opt
104K	/srv
0	/.autorelabel
2.6G	/
```
  • 14 сентября 2023 г. 10:07
Ответы на вопрос 1
При выполнении операции ALTER TABLE MySQL создает временную таблицу с новой структурой, копирует данные из старой таблицы в новую и затем выполняет переименование новой таблицы в старую. Весь этот процесс выполняется на месте, где находится база данных MySQL, то есть на диске, указанном в конфигурации MySQL. 

Хотя данные MySQL могут находиться на отдельном диске, операция ALTER TABLE все равно использует основной диск, потому что MySQL сохраняет временные файлы на диске, на котором находится база данных. Это связано с тем, что создание временной таблицы и копирование данных в нее требует операций ввода-вывода, которые производятся непосредственно на диске. 

Поэтому, если при выполнении операции ALTER TABLE на таблице размером в 18 ГБ используется системный диск, это означает, что временные файлы этой операции сохраняются на диске, на котором расположена база данных MySQL.
Похожие вопросы