Утилита pv для ограничения скорости записи
📝 Статьи
Утилита pv для ограничения скорости записи
Ситуация
У вас есть база данных, которая не толерантна к большому объёму INSERT-ов и UPDATE-ов. Но у вас также есть большой дамп с кучей таких операций.
Как безопасно импортировать дамп в базу и не убить её?
Решение
Если вы делаете вставку через терминал, например, направляя поток сразу в mysql
, то можно просто ограничить скорость записи с помощью утилиты pv
:
# скорость ограничена 100 тысячами строк в секунду
pv -L 100k -l dump.sql | mysql -u root -p
# скорость ограничена 100 строками в секунду
pv -L 100 -l dump.sql | mysql -u root -p
-l
– строчный режим, ведьpv
может ограничивать скорость и просто в байтах-L 100
– необходимое ограничение
Описание
Вообще, утилита pv (pipevieiwer
) известна как способ отображения прогресса и скорости UNIX-пайплайна. Если вы делаете вот так:
my_program < some_input.bin
# или вот так
cat some_input.bin > my_program
То прогресс виден не будет. Это ок, когда речь идёт о небольших файлах. Но для больших можно сделать так:
pv some_input.bin | my_program
И тогда вы увидите что-то подобное:
➜ pv some_input.bin | my_program
154KiB 0:00:09 [1000 B/s] [=====> ] 12% ETA 12:03:16:07
Установка
Утилита есть в стандартном наборе репозиториев большинства дистров, поэтому ограничусь командами для копипаста.
MacOS
brew install pv
Ubuntu/Debian
sudo apt-get install pv
CentOS/Fedora
sudo yum install pv