Тут будуть описані деякі методи, які краще використовувати у 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).