Деякі хитрі методи видалення/очистки файлів

Тут будуть описані деякі методи, які краще використовувати у HighLoad, замість класичних, оскільки вони менше навантажують ПЗ.

  • truncate

Дозволяє обрізати файл до розміру, який вказано, наприклад, до 5Gb (зараз файл займає, наприклад, 10Gb):

$ truncate -s 5G file

Зауваження.

Чим цей метод краще, ніж, echo > file. Тим, що echo це робить дуже агресивно і дуже навантажує диски, а також блокує файловий дескриптор. truncate можна виконувати, наприклад, поєтапно, за 1 раз “обрізаючи” по 1Gb, або менше.

  • ln (саме hardlink)

В даному випадку спробуємо зробити drop table в mysql, але таблиця займає 100Gb. Простий drop table може “підвісити” весь mysql з усіма наслідками. Для цього пропонується такий хак:

# cd /database/mysql/big_db
# ln large_table.ibd large_table.ibd.hardlink
mysql>drop table if exists big_db.large_table;
# rm large_table.ibd.hardlink (or truncate -s <> large_table.ibd.hardlink)

Чому це швидко? Тому, що це hardlink і по суті виконується лише unlink, коли ми робимо drop table без видалення фактичних даних (оскільки самі дані все ще лишаються у large_table.ibd.hardlink).

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.